Guten Morgen
Habe dein Problem ein wenig verfolgt und möchte auch meinen Senf dazu geben
Zitat von
Martin K:
Lass doch die repeat/until-Schleife weg und mache es wie ich oben geschrieben habe.
Genau! Lass Dir gesagt sein, bis auf die Ausgabe der Zahlen am Schluss brauchst du im ganzen Progamm nicht eine for- oder repeat- Schleife.
Du musst nur beherzigen, daß dein Programm
ereignissorientiert aufgebaut werden muss, und nicht wie früher so oft in Ablauffolge.
Also nur wenn der RateButton gedrückt wurde, in ratebuttonClick
-> Prüfen -> Versuchszähler um 1 erhöhen -> Ratezahl in Array[Versuchszähler] speichern
Dann kannst du dir noch die einzig nötige Schleife zu Ausgabe in den ButtonClick eibauen;
(PseudoCode)
Delphi-Quellcode:
RateButtonClick
...
// -> Prüfen -> Versuchszähler um 1 erhöhen -> Ratezahl in Array[Versuchszähler] speichern
if (RateZahl = Zufallszahl) OR (Versuchzähler = 4) then
for i := 0 to 4 ShowMessage( IntToStr(Array[i]) );
end;
Globale Variablen sind eigentlich verpönnt, doch am Anfang wunderbar verständlich.
Schaffe dir eine globale Variable Versuchszaehler und erhöhe diese grundsätzlich nur wenn der
Ratebutton betätigt wurde.
Und dieses:
Delphi-Quellcode:
For i := 0 to 4 do
ausgabeedt.caption := inttostr(Zahl[i]);
inc(i);
end;
ist, sorry das ich das so direkt schreibe, total vermurkst.
Du lässt in eine Schleife 4 mal eine Zahl an ausgabeedt anzeigen. Das geht so fix, das du nur noch die letzte Zahl sehen kannst.
In der Schleife selbst wird automatisch die Laufvariable "i" immer um 1 erhöht. Das inc(i) ist also mehr als überflüssig.
Es juckt in den Fingern hier fertigen Code einzustellen, doch das wird Dir auf dauer garnicht helfen.
Am besten du schaust dir mal die Grundlagen an, wie zum Beispiel
auf diesen Seiten
Bei Fragen, fragen