Guck Dir mal die Syntax für eine FOR-Schleife an:
Beispiel:
Delphi-Quellcode:
For i := 1 to 20 do
Anweisung;
Die For-Schleife wird genau 20mal durchlaufen, wobei i beim ersten Durchlauf den Wert 1 hat, beim zweiten 2, usw. bis 20.
i wird also vom Startwert 1 aus so oft erhöht, bis es den Wert 20 hat.
Eine Schleife mit Endwert i wobei i auch die Zählvariable ist wie in Deinem Code, ist also falsch.
In Deinem Fall soll wohl das Array durchlaufen werden, also soll i die Werte von 0 bis 4 annehmen.
Überlege Dir selbst, wie Du dann mein Beispiel abändern musst.
Ein Inc(i) ist hier fehl am Platz, da i automatisch beim nächsten Durchlauf um 1 erhöht wird.
Wenn in der Schleife mehrere Anweisungen stehen sollen, musst Du einen begin/end-Block um die Anweisungen machen.
Beispiel:
Delphi-Quellcode:
For i := 1 to 20 do
begin
Anweisung1;
Anweisung2;
usw.
end;
Wenn nur eine Anweisung in der Schleife steht, kannst Du auf begin/end verzichten.
zufallszahl := 0; (am Anfang)
Diesen Wert von zufallszahl verwendest Du nirgends, Du kannst diese Zeile also streichen.
Dasselbe gilt für die Anweisung
i := 0;
[Edit:]
Das Auslesen der ratezahl aus eingabeedt.Text und die ganze IF-Abfrage sollten wohl in die For-Schleife mit rein, da ratezahl sonst den Wert innerhalb der For-Schleife nie ändert.
Zitat von
lun87:
Die Zufallszahl wird mit der Zahl des Anwenders verglichen (5 Versuche hat man!)
Dann würde ich allerdings keine For-Schleife verwenden, sondern NUR die repeat/until-Schleife (For-Schleife weglassen).
Die repeat/until-Schleife wird dann verlassen, wenn entweder zufallszahl = ratezahl ist oder der Anwender 5mal geraten hat, also i = 4 ist.
In diesem Fall musst Du dann doch i initialisieren (auf den Startwert 0 setzen, wie es in Deinem Code oben ist) und in der repeat/until-Schleife muss i um 1 erhöht werden, also Inc(i) so wie es war
(sorry dass ich es erst anders geschrieben hatte, aber mir war nicht so ganz klar, was Du mit der For-Schleife bezwecken willst.
Also im Prinzip müsste es klappen, wenn Du die Zeile mit der For-Schleife einfach streichst.)