Zitat von
Binärbaum:
Zitat von
sniper_w:
Delphi-Quellcode:
for i:=0 to random(Q.Count) do
Q.Push(Q.Pop);
LogForm.APPEND('Tmaze.RandomTQueueItem: Zufälliges element:'+inttostr(i)+' aus:'+inttostr(Q.Count),0);
Variable i ist nach der Schleife undeffiniert. (Delphi ist nicht halt C
)
Also i ist nach der Schleife nicht undefiniert, sondern hat (hier im Beispiel) den Wert random(Q.Count)+1. Eine Schleifenvariable ist nach Ende der Schleife um eins größer als die Obergrenze der Laufvariable (bzw. bei DOWNTO um eins kleiner).
Das ist aber reiner Zufall. Oder warum sagt mir mein Compiler bei diesem Code:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;
begin
for i := 0 to 9 do
begin
Listbox1.Items.Add(IntToStr(i));
end;
ShowMessage(IntToStr(i));
end;
Zitat:
[Warning] Unit1.pas(35): FOR-Loop variable 'i' may be undefined after loop
Warnung gibt der Compiler nicht nur zur Unterhaltung des Programmierers aus.