Darum geht es nicht. Es nur ein kurzes Beispiel. Es geht darum das bei until kein Blauer Punkt ist. Also wird die Zeile nicht ausgeführt.
Leider falsch.
Kein blauer Punkt => Kein Breakpoint setzbar.
Es sagt leider nichts darüber aus, ob das ausgeführt wird oder nicht. Somit ein Bug der gefixt werden sollte.
Ob da was ausgeführt wird oder nicht siehst du aber in der CPU-Ansicht.
Breakpoint auf SetLength und dann in die CPU-Ansicht wechseln. Dort sieht man dann, wo (und ob) der Vergleich stattfindet (habe ich dir mal gelb markiert).
Jetzt bekommt man auch eine Ahnung, warum in der Zeile mit dem
until
kein Breakpoint gesetzt werden kann.
Eine weitere Ahnung beschleicht einen, wenn man dann einen Breakpoint auf die Zeile mit dem
repeat
setzt. Wenn das Programm dort jetzt zum
ersten Mal anhält, dann hat das Array schon eine Länge von 1.
Kleines Schmankerl noch zum Schluss:
Schau dir mal die blauen Punkte bei diesem Code an
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
aArray: Array of String;
function IsFinished(): Boolean;
begin
Result := (high(aArray) >= 5);
end;
begin
repeat
SetLength(aArray, length(aArray) + 1);
until IsFinished();
end;
Die Zeile mit dem until
hat jetzt einen blauen Punkt, dafür aber die Zeile mit dem repeat
nicht mehr