![]() |
If Abfrage
Hallo,
ich habe noch eine Frage zu der If Abfrage.
Delphi-Quellcode:
So sieht es jetzt aus und ich möchte eine Ausageb haben wenn keine der Abfragen stimmt.
procedure TZahlen.get_Punkte(const Punkte: Integer);
begin FPunkte := Punkte; end; function TZahlen.vergleichen: string; begin if FSpielerZahl1 = FComputerZahl1 then begin FPunkte := FPunkte + 1; Result := 'Sie haben gewonnen!' end; if FSpielerZahl2 = FComputerZahl2 then begin FPunkte := FPunkte + 1; Result := 'Sie haben gewonnen!' end; if FSpielerZahl3 = FComputerZahl3 then begin FPunkte := FPunkte + 1; Result := 'Sie haben gewonnen!' end; end; Dann soll die Meldung "Sie haben verloren!" kommen. Gruß, Schnittcher |
Re: If Abfrage
Stichwort: else
... Evtl. solltest du dir mal die Delphi Tutorials anschauen. Denn eine "if" "then" "else" Abfrage ist nun wirklich Basiswissen ;) |
Re: If Abfrage
Versuchs ungefähr so:
Delphi-Quellcode:
procedure TZahlen.get_Punkte(const Punkte: Integer);
begin FPunkte := Punkte; end; function TZahlen.vergleichen: string; begin if (FSpielerZahl1 = FComputerZahl1) or (FSpielerZahl2 = FComputerZahl2) or (FSpielerZahl3 = FComputerZahl3) then begin if FSpielerZahl1 = FComputerZahl1 then begin FPunkte := FPunkte + 1; Result := 'Sie haben gewonnen!' end; if FSpielerZahl2 = FComputerZahl2 then begin FPunkte := FPunkte + 1; Result := 'Sie haben gewonnen!' end; if FSpielerZahl3 = FComputerZahl3 then begin FPunkte := FPunkte + 1; Result := 'Sie haben gewonnen!' end; end else begin Result := 'Sie haben verloren!' end; end; |
Re: If Abfrage
Hallo,
das ist klar, aber geht das denn jetzt? Weil ich 3 verschiedene Abfragen habe. Gruß, Schnittcher |
Re: If Abfrage
Zitat:
|
Re: If Abfrage
oder so (ungetestet):
Delphi-Quellcode:
€: OK, sehe gerade das es mehrmals Punkte gibt, nicht nur einmal...
if (FSpielerZahl1 = FComputerZahl1)
or (FSpielerZahl2 = FComputerZahl2) or (FSpielerZahl3 = FComputerZahl3) then begin FPunkte := FPunkte + 1; Result := 'Sie haben gewonnen!' end else begin Result := 'Sie haben verloren!' end; |
Re: If Abfrage
Hai,
warum nicht einfach die "ausnahme" als Vorgabewert?
Delphi-Quellcode:
function TZahlen.vergleichen: string;
begin Result := 'Sie haben verloren'; if FSpielerZahl1 = FComputerZahl1 then begin FPunkte := FPunkte + 1; Result := 'Sie haben gewonnen!' end; if FSpielerZahl2 = FComputerZahl2 then begin FPunkte := FPunkte + 1; Result := 'Sie haben gewonnen!' end; if FSpielerZahl3 = FComputerZahl3 then begin FPunkte := FPunkte + 1; Result := 'Sie haben gewonnen!' end; end; |
Re: If Abfrage
[OT] Ihr glaubt garnicht wie froh ich war mal "If Abfrage" im Titel zu lesen anstatt "If Schleife" :mrgreen: [/OT]
|
Re: If Abfrage
Hallo,
alles klar danke für die schnellen Antworten. Eine Frage jetzt noch wenn ich sagen will "Sie haben 2 Zahlen richtig erraten!" Das ich prüfe ob FPunkte zum Beispiel um 1 größer geworden ist oder um 2 oder um 3? Und wenn größer um 2 dann: "Sie haben " Zahlen richtig erraten!" Kann man das so machen? Gruß, Schnittcher |
Re: If Abfrage
wenn Du die Anzahl der erratenen Punkte in einer Integer-variable hast (z.B. points), kannst Du einen String mit Format bilden:
ShowMessage(Format('Sie haben %d Zahlen richtig erraten!',[Points])); |
Re: If Abfrage
Hallo,
ich habe es jetzt so gelöst.
Delphi-Quellcode:
Gruß,
function TZahlen.VergleichePunkteAlt: string;
begin if FPunkte - FPunkte_alt = 1 then Result := 'Sie haben eine Zahl richtig erraten!' else if FPunkte - FPunkte_alt = 2 then Result := 'Sie haben zwei Zahlen richtig erraten!' else if FPunkte - FPunkte_alt = 1 then Result:= 'Sie haben zwei Zahlen richtig erraten!' end; Schnittcher |
Re: If Abfrage
Zitat:
Die letzte If-Abfrage ist wie die erste und wenn die erste schon nicht klappt, wird die letzte genau so wenig klappen. Außerdem fehlt noch, ob man nichts erraten hat. |
Re: If Abfrage
Hallo,
ja stimmt da muss eine 3 hin. Aber geht es den so? Gruß, Schnittcher |
Re: If Abfrage
Und für den Fall, dass gar nichts zutrifft:
Delphi-Quellcode:
function TZahlen.VergleichePunkteAlt: string;
begin if FPunkte - FPunkte_alt = 1 then Result := 'Sie haben eine Zahl richtig erraten!' else if FPunkte - FPunkte_alt = 2 then Result := 'Sie haben zwei Zahlen richtig erraten!' else if FPunkte - FPunkte_alt = 3 then Result:= 'Sie haben drei Zahlen richtig erraten!' else Result := 'Verloren'; end; |
Re: If Abfrage
Zitat:
das für jede mögliche Anzahl von Punkten und Spielgewinnen so machen willst. Grüße Klaus |
Re: If Abfrage
Zitat:
Delphi-Quellcode:
Sieht wie ich finde deutlich besser aus, als die verschachtelten if-Anweisungen.
function TZahlen.VergleichePunkteAlt: string;
begin case FPunkte - FPunkte_alt of 0: Result := 'Sie haben keine Zahl richtig erraten!'; 1: Result := 'Sie haben eine Zahl richtig erraten!'; 2: Result := 'Sie haben 2 Zahlen richtig erraten!'; 3: Result := 'Sie haben 3 Zahlen richtig geraten!'; end; else Result := 'Es ist ein Fehler in der Berechnung aufgetreten!'; MfG BAMatze [Edit1] Muhkuh´s Einwand mit keinem Treffer hinzugefügt[/Edit] |
Re: If Abfrage
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
mehr gibt es ja nicht. Das mit dem case finde ich auch gut. Das schaue ich mir mal an. Danke. so eine Frage noch:
Delphi-Quellcode:
Sieht jemand hier einen Fehler?
if FRunden = FRundenEingabe then
ShowMessage(Format('Sie haben %d Punkte erreicht!',[punkte])) else begin SpielerZahlen[0] := StrToInt(edZahl1.Text); SpielerZahlen[1] := StrToInt(edZahl2.Text); SpielerZahlen[2] := StrToInt(edZahl3.Text); Zahlen := TBackupClassesFactory.Zahlen; Zahlen.SpielerZahl := SpielerZahlen; Zahlen.set_ComputerZahlen; Zahlen.vergleichen; lbAussage.Caption := Zahlen.VergleichePunkteAlt; FPunkte := FPunkte + Zahlen.HolePunkte; Zahlen.get_Punkte(FPunkte); lbPunkte.Caption := IntToStr(Zahlen.HolePunkte); end; Fehler ist im Anhang. Gruß, Schnittcher |
Re: If Abfrage
Hallo,
wo ist den das Create von TBackupClassesFactory? Die Fehlermeldung sieht so aus, als würdest Du auf eine nichtinitialisierte Variabel zugreifen. |
Re: If Abfrage
Hallo,
das kam erst nach der If Abfrage, das war der Fehler. Danke. Gruß, Schnittcher |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:44 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