Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi If Abfrage (https://www.delphipraxis.net/139968-if-abfrage.html)

Schnittcher 9. Sep 2009 11:34

Re: If Abfrage
 
Hallo,

ich habe es jetzt so gelöst.

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 = 1 then
  Result:= 'Sie haben zwei Zahlen richtig erraten!'
end;
Gruß,
Schnittcher

Die Muhkuh 9. Sep 2009 11:41

Re: If Abfrage
 
Zitat:

Zitat von Schnittcher
Hallo,

ich habe es jetzt so gelöst.

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 = 1 then
  Result:= 'Sie haben zwei Zahlen richtig erraten!'
end;
Gruß,
Schnittcher

Da ist aber ein dicker Fehler drin.

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.

Schnittcher 9. Sep 2009 11:48

Re: If Abfrage
 
Hallo,

ja stimmt da muss eine 3 hin. Aber geht es den so?

Gruß,
Schnittcher

Luckie 9. Sep 2009 11:50

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;

Klaus01 9. Sep 2009 11:50

Re: If Abfrage
 
Zitat:

Zitat von Schnittcher
Hallo,

ja stimmt da muss eine 3 hin. Aber geht es den so?

Gruß,
Schnittcher

.. im Prinzip schon, nur wird es etwas mühsam wenn Du
das für jede mögliche Anzahl von Punkten und Spielgewinnen so machen
willst.

Grüße
Klaus

BAMatze 9. Sep 2009 11:54

Re: If Abfrage
 
Zitat:

Zitat von Die Muhkuh
Zitat:

Zitat von Schnittcher
Hallo,

ich habe es jetzt so gelöst.

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 = 1 then
  Result:= 'Sie haben zwei Zahlen richtig erraten!'
end;
Gruß,
Schnittcher

Da ist aber ein dicker Fehler drin.

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.

Wie wäre es mit einer case-Anweisung:

Delphi-Quellcode:
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!';
Sieht wie ich finde deutlich besser aus, als die verschachtelten if-Anweisungen.

MfG
BAMatze

[Edit1] Muhkuh´s Einwand mit keinem Treffer hinzugefügt[/Edit]

Schnittcher 9. Sep 2009 11:56

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:
  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;
Sieht jemand hier einen Fehler?

Fehler ist im Anhang.

Gruß,
Schnittcher

nahpets 9. Sep 2009 12:07

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.

Schnittcher 9. Sep 2009 12:17

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:41 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz