![]() |
Versuche werden nicht gezählt
Delphi-Quellcode:
Ich hätte da zwei Fragen und auch 2 Probleme :/. Erstens wenn ich auf den Button klicke sollte er normalerweise eine Zufallszahl generieren das Problem ist wenn ich das erste mal draufdrücke erscheint erst eine 0 und erst beim 2 mal drücken wird die Zufallszahl generierte . Und Zweitens Die Versuche werden immer nur bei dem ersten Click gezählt z.B. Von 0 auf 1 dann jedoch nicht mehr egal wie oft ich drauf drücke. Was mach ich wohl Falsch ?
procedure TForm10.Button3Click(Sender: TObject);
begin Versuche:=0; Versuche:= Versuche +1; label5.Caption:='Versuche: ' +IntToStr(Versuche) ; label2.caption:=IntToStr(zahl1); label3.Caption:=IntToStr(zahl2); zahl1:=random(100)+2; zahl2:=random(100)+2; if (zahl1) and (zahl2) =0 then repeat zahl1:=random(100)+2; zahl2:=random(100)+2; until (zahl1) and (zahl2) <> 0; Zahl3:=StrToInt(label2.caption) ; Zahl4:=StrToInt(label3.caption); Ergebnis2:= (zahl3+zahl4) ; edit2.Text:=IntToStr(Ergebniss2) ; Sorry bin ein absoluter Neuling.Dennoch würde ich mich freue ich mich über jede hilfreiche Antwort. :o |
AW: Versuche werden nicht gezählt
Problem 1:
Zu Beginn musst Du
Delphi-Quellcode:
aufrufen:
Randomize
Delphi-Quellcode:
...
Randomize; Zahl1 := Random(100); ... Problem 2: Jedes mal wenn Du den Button drückst, wird die Variable Versuch auf Null zurückgesetzt. In diesem Fall musst Du die Variable ausserhalb der Function definieren (globale Variablen) und auf Null zurücksetzen. Innerhalb der Function musst Du die Variable dann hochzählen.
Delphi-Quellcode:
Beachte aber, dass globale Variablen häufig zu Fehler/Missverständnissen führt und daher mit Bedacht eingesetzt werden sollte.
var
Versuch : Integer; procedure Reset; begin Versuch := 0; end; procedure TForm10.Button3Click(Sender: TObject); begin inc(Versuch); ... end; |
AW: Versuche werden nicht gezählt
Ich kommentiere einfach mal Deinen Code um es für Dich zu übersetzen was Du da treibst
Zitat:
|
AW: Versuche werden nicht gezählt
Ps: So in etwa würde ich es machen, zum Einstieg, später kannst Du es mit Klassen und eigenen Funktionen/Methoden immer noch abändern/erweitern.
Falls noch kein "Form.Create" Event existiert, doppelklick auf eine leere Stelle im Dialog, oder wähle im Objekt-Inspektor die Form aus und setze manuell ein solches Event. Zitat:
|
AW: Versuche werden nicht gezählt
Zitat:
Obiger Ausschnitt muss eigentlich wie folgt geschrieben sein:
Delphi-Quellcode:
Das "and" hat in deinem Source völlig andere Bedeutung.
procedure TForm10.Button3Click(Sender: TObject);
begin ... if (zahl1 = 0) and (zahl2 = 0) then repeat ... until (zahl1 <> 0) and (zahl2 <> 0); ... Es bewirkt ein logisches and zwischen den Zahlen und vergleicht das Ergebnis mit 0 (bzw. <> 0). Du meinst aber sicher, dass beide Zahlen 0, bzw. <> 0 sein sollen. |
AW: Versuche werden nicht gezählt
Und ist noch eleganter, wenn man Bedingung und Schleife zusammenpackt (Kopfgesteuerte Schleife):
Delphi-Quellcode:
procedure TForm10.Button3Click(Sender: TObject);
begin ... while (zahl1 = 0) and (zahl2 = 0) do begin ... end; ... |
AW: Versuche werden nicht gezählt
Da ZahlX mit +2 initialisiert wird, werden Eure Versuche, egal wie elegant sie aussehen mögen, niemals aufgerufen.
|
AW: Versuche werden nicht gezählt
Zitat:
Mir ging es um den grundsätzlichen Fehler in der Definition der Prüfbedingungen. |
AW: Versuche werden nicht gezählt
Ja nein schon klar, ich habe das nur geschrieben weil TE von sich selbst sagte "Neuling" aber von Euch keiner erwähnte das die Bedingung niemals erfüllt wird. Das sollte keinen Zweifel an Eurem Code sein, Bitte um Richtigstellung meiner Aussage und Verzeihung falls es falsch rüber kam, Danke für Deine Verbesserung zu meiner falsch geschriebenen Erklärung im Kommentar.
|
AW: Versuche werden nicht gezählt
Zitat:
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz