Einzelnen Beitrag anzeigen

Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#5

Re: FOR-Schleifenvariable muss eine lokale Variable sein. Wa

  Alt 23. Aug 2003, 20:53

Zitat von madbrain:
hmmm
ok danke. werd ich mal probieren, aber..

Warum???
Wie Hansa schon sagte, es handelt sich um eine Compiler-Optimierung. Intern wird I gar nicht für die Schleife benötigt, die Schleife wird durch das Register ECX gesteuert (dazu noch rückwärts). Wenn auf I zugegriffen wird, wird zusätzlich ein anderes Register herangezogen (i.A. EAX bzw EDX). Wenn I jetzt nicht lokal wäre, dann könnte ein zweiter Thread auf I zugreifen, um zu ermitteln wie der aktuelle Wert von I ist.

Oops, I wird gar nicht genutzt, diese Abfrage würde fehlschlagen.

Um dieser Eventualität vorzubeugen muss I lokal sein. Aus gleichem Grund kann I auch innerhalb einer for-Schleife nicht manipuliert werden.

Die Antwort mag nicht befriedigend für Dein Problem sein, ist aber der Grund dazu. Ich würde Dir empfehlen for-Schleifen zu nutzen, die sind seit Delphi 3 oder 4 i.A. performanter als while- und repeat-Schleifen.

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat