AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

For-Schleife von 0 bis 7 fängt bei 8 an

Ein Thema von Flogo · begonnen am 14. Dez 2004 · letzter Beitrag vom 17. Dez 2004
Antwort Antwort
Seite 2 von 3     12 3      
Robert Marquardt
(Gast)

n/a Beiträge
 
#11

Re: For-Schleife von 0 bis 7 fängt bei 8 an

  Alt 15. Dez 2004, 07:41
Der Wert kann durchaus gelegentlich bei 8 stehen.
Der Compiler beginnt bei 8 und dekrementiert erst mal und testet dann.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#12

Re: For-Schleife von 0 bis 7 fängt bei 8 an

  Alt 15. Dez 2004, 07:55
Zitat von negaH:
Die dazu benutzen Befehle sind NICHT schneller als die Befehle des unoptimierten Codes, das ist ein Irrtum.
Ein CMP ist eine SUB Anweisung wo das Ergebnis verworfen und nicht in ein Register geschrieben wird. Und ich bin da schon der Meinung, wenn das Programm keine tzsätzliche Substraktion ausführen muss, dass es ein klein wenig schneller läuft. Und wenn dann die Zählervariable nicht in ein Register eingelagert werden kann, dann ist da auch noch ein Speicherzugriff mehr. Und bei einer Schleife, die mehrere Tausend male durchlaufen wird, macht sich das dann doch leicht bemerkbar.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#13

Re: For-Schleife von 0 bis 7 fängt bei 8 an

  Alt 15. Dez 2004, 09:09
Moin!

Zitat von negaH:
Bei jeder mathematischen Operation mit Ganzzahlen auf einer Intel CPU wird ...
Auch bei x86 CPUs von VIA, Transmeta, AMD etc...

MfG
Muetze1
  Mit Zitat antworten Zitat
Benutzerbild von Flogo
Flogo

Registriert seit: 24. Mär 2003
Ort: Freiburg im Breisgau
317 Beiträge
 
Delphi 7 Professional
 
#14

Re: For-Schleife von 0 bis 7 fängt bei 8 an

  Alt 15. Dez 2004, 12:14
Mein Problem war eben, dass ich ein i = 8 als Index in ein Array von 0 bis 7 einsetzen wollte
ungefähr so:
Delphi-Quellcode:
var
  A: array[0..7] of Integer;
  i: Integer;
begin
  for i := 0 to 7 do
    A[i] := 42;
end;
Als Ergebnis gabs ne AV bei i = 8. Als ich das Array auf [1..8] geändert hatte gings. So wie ich den Link von jim_raynor verstanden hab sollte das ja eigentlich nichts ausmachen
Naja vielleicht war auch schon vorher irgendwo ein kleiner Fehler, der nur dabei rausgekommen ist.

Mittlerweile hat sich das bei mir sowieso schon geklärt, da ich auf eine andere Suchmethode umgestiegen bin, in der das Array gar nicht mehr vorkommt.
War aber trotzdem mal ganz interessant zu wissen.
If one coincidence can occur, then another coincidence can occur. And if one coincidence happens to occur just after another coincidence, then that is just a coincidence.
DNA

www.Anyxist.de
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#15

Re: For-Schleife von 0 bis 7 fängt bei 8 an

  Alt 15. Dez 2004, 12:22
Hi Flo,


der Code geht bei mir wunderbar. Ich bekomme keine AV oder so.
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#16

Re: For-Schleife von 0 bis 7 fängt bei 8 an

  Alt 15. Dez 2004, 12:44
Zitat von Flogo:
Mein Problem war eben, dass ich ein i = 8 als Index in ein Array von 0 bis 7 einsetzen wollte
ungefähr so:
Delphi-Quellcode:
var
  A: array[0..7] of Integer;
  i: Integer;
begin
  for i := 0 to 7 do
    A[i] := 42;
end;
Als Ergebnis gabs ne AV bei i = 8. Als ich das Array auf [1..8] geändert hatte gings. So wie ich den Link von jim_raynor verstanden hab sollte das ja eigentlich nichts ausmachen
Naja vielleicht war auch schon vorher irgendwo ein kleiner Fehler, der nur dabei rausgekommen ist.

Mittlerweile hat sich das bei mir sowieso schon geklärt, da ich auf eine andere Suchmethode umgestiegen bin, in der das Array gar nicht mehr vorkommt.
War aber trotzdem mal ganz interessant zu wissen.

Ich kann mir eigentlich nicht ganz vorstellen, dass vor Dir noch niemand eine for Schleife mit einem Array eingesetzt hat, insofern würde ich den Fehler eher woanders suchen, nichtsdesto trotz brenne ich darauf das zuhause selbst mal zu versuchen. Was hast Du denn für eine Delphi Version verwendet?
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#17

Re: For-Schleife von 0 bis 7 fängt bei 8 an

  Alt 15. Dez 2004, 12:54
Zitat von Flogo:
Mein Problem war eben, dass ich ein i = 8 als Index in ein Array von 0 bis 7 einsetzen wollte
ungefähr so:
Delphi-Quellcode:
var
  A: array[0..7] of Integer;
  i: Integer;
begin
  for i := 0 to 7 do
    A[i] := 42;
end;
Als Ergebnis gabs ne AV bei i = 8.
Ist ja auch logisch oder? Den Index 8 gibt es ja gar nicht. Das achte Element hat bei dir den Index 7.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#18

Re: For-Schleife von 0 bis 7 fängt bei 8 an

  Alt 15. Dez 2004, 13:00
Zitat von Luckie:
Ist ja auch logisch oder? Den Index 8 gibt es ja gar nicht. Das achte Element hat bei dir den Index 7.
Aber bei dem Beispiel sollte i während eines Schleifendurchlaufes niemals den Wert 8 erreichen bzw. haben.
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#19

Re: For-Schleife von 0 bis 7 fängt bei 8 an

  Alt 15. Dez 2004, 13:04
Das ist wohl schon die korrigierte Fassung.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#20

Re: For-Schleife von 0 bis 7 fängt bei 8 an

  Alt 15. Dez 2004, 13:49
Wenn man folgendes laufen läßt :

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i : integer;
begin
  for i := 0 to 7 do
    showmessage ('*'+IntToStr (i)+'*');
  showmessage (IntToStr (i));
end;
dann hat i innerhalb der Schleife einen Wert von 0 bis 7. Außerhalb der Schleife, ganz am Schluß, ist es aber 8. Warum das so ist ? Mir egal. Nur wichtig für Nanosekunden-Programmierer. Man sollte eben nur den Schluß daraus ziehen, solche Variablen wirklich nur für den Zweck der Schleife einzusetzen.
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz