Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Delphi überspringt eine Zeile
Fabian E. - Mi 09.04.08 20:25
Titel: Delphi überspringt eine Zeile
hallo zusammen,
habe ein kleines problem mit einem schleifenkonstrukt.
Der compiler weigert sich in eine Zeile zu springen aber seht selbst:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| procedure TForm1.btGoCountClick(Sender: TObject); var i : Integer; StopIt : Boolean; begin StopIt := false; if btGoCount.Caption = 'Start' then begin btGoCount.Caption := 'Stop'; pbCount.Max := StrToInt(edCount.Text); pbCount.Position := 0; for i := 1 to StrToInt(edCount.Text) do begin btGo.Click; Application.ProcessMessages; pbCount.Position := i; if StopIt then Exit; end; end else if btGoCount.Caption = 'Stop' then begin btGoCount.Caption := 'Start'; StopIt := true; end; end; |
Hat jemand eine idee woran das liegen könnte?
gruß
Xentar - Mi 09.04.08 20:34
Delphi bringt ein wenig Intelligenz mit - es erkennt, dass die markierten Zeilen niemals durchlaufen werden können.
Du initialisierst die Variable mit false. Bis Zeile 17 gibt es keine Möglichkeit, dass dieser Wert geändert wird -> kann sie an der Stelle nicht true sein -> weg optimiert.
In Zeile 25 setzt du sie zwar auf true, aber verwendest sie danach nicht mehr -> weg optimiert.
Das ganze sollte übrigens auch als Hinweise ausgegeben werden, so von wegen "Zugewiesener Wert wird nicht benutzt" ;)
jaenicke - Mi 09.04.08 20:52
Ich vermute mal, dass das eine Möglichkeit zum Abbrechen des Vorgangs werden soll. Dann musst du die Variable aber auch global deklarieren und dann funktioniert das auch, da von außerhalb der Prozedur ein Zugriff auf die Variable möglich ist.
Fabian E. - Mi 09.04.08 20:54
jaenicke hat folgendes geschrieben: |
Ich vermute mal, dass das eine Möglichkeit zum Abbrechen des Vorgangs werden soll. Dann musst du die Variable aber auch global deklarieren und dann funktioniert das auch, da von außerhalb der Prozedur ein Zugriff auf die Variable möglich ist. |
ach verdammt... ich glaub ich hatte heute echt zu lang schule... naja dumme fehler passieren auch schonmal... danke :)
gruß
passiv - Do 10.04.08 08:00
genau das gleiche Problem hatte vor kurzem ein Freund von mir. der hatte ein randomize dann den Prozeduraufruf, und wenn das erste in der Prozedur auch ein randomize war, hat er drinnen alle Zeilen mit einer bestimmten Variable ignoriert. als das randomize in der Prozedur weg war, hat er alles gemacht wie er sollte ...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!