Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Anweisung erfolderlich, aber Ausdruck vom Typ Boolean? (https://www.delphipraxis.net/170440-anweisung-erfolderlich-aber-ausdruck-vom-typ-boolean.html)

SilasF. 17. Sep 2012 14:27

Anweisung erfolderlich, aber Ausdruck vom Typ Boolean?
 
Hallo zusammen.
Unsere Aufgabe ist es ein Programm zu machen welches 3 Zufallszahlen ausspucken soll und
dann sagen soll welches das größte ist..
soweit bin ich bis jetzt:
Delphi-Quellcode:
var
  Form1: TForm1;
  Zahl1 , Zahl2 , Zahl3 : Integer ;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Zahl1:= Random(100) ;
Zahl2:= Random(100) ;
Zahl3:= Random(100) ;
label1.Caption:= inttostr (Zahl1) ;
Label2.Caption:= inttostr (Zahl2) ;
Label3.Caption:= inttostr (Zahl3) ;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if StrToInt (label1.caption) > Zahl2
then label4.caption :='Zahl1 ist die größte Zahl!'
else if StrToInt (label1.Caption) < Zahl2
then label4.caption :='Zahl2 ist die größte Zahl!' ;
if StrToInt (label1.Caption) > Zahl3
then label4.Caption :='Zahl1 ist die größte Zahl!'
else if StrToInt (label1.caption) < Zahl3
then label4.caption :='Zahl 3 ist die größte Zahl!' ;
if StrToInt (label2.caption) > Zahl3
then label4.caption :='Zahl2 ist die größte Zahl!'
else StrToInt (label2.caption) < Zahl3
then label4.caption :='Zahl3 ist die größte Zahl' ;

end;

end.
jedoch zeigt er in der Letzten Zeile an(also bei then): Anweisung erfolderlich,
aber Ausdruck vom Typ Boolean gefunden?
Was muss ich nun tun?
Danke im Vorraus

Medium 17. Sep 2012 14:28

AW: Anweisung erfolderlich, aber Ausdruck vom Typ Beelean?
 
Das fehlende "if" dort ergänzen ;)

SilasF. 17. Sep 2012 14:33

AW: Anweisung erfolderlich, aber Ausdruck vom Typ Beelean?
 
Zitat:

Zitat von Medium (Beitrag 1183289)
Das fehlende "if" dort ergänzen ;)

wo welches if denn?

SilasF. 17. Sep 2012 14:34

AW: Anweisung erfolderlich, aber Ausdruck vom Typ Beelean?
 
Dankeschöööön !!!!!!!!!

Klaus01 17. Sep 2012 14:42

AW: Anweisung erfolderlich, aber Ausdruck vom Typ Beelean?
 
.. noch eine Anmerkung,
die Datenhaltung sollte nicht in den Controls (TLabel) vorgenommen werden.

Die Zahlen dann nur zur Ausgabe an die Controls geben.
Bei den Vergleichen kannst Du dir so die ganzen Konvertierungen sparen.

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
  if Zahl1 > Zahl2 then
    label4.caption :='Zahl1 ist die größte Zahl!'
  else
    if Zahl1 < Zahl2 then
      label4.caption :='Zahl2 ist die größte Zahl!' ;

  if Zahl1 > Zahl3 then
    label4.Caption :='Zahl1 ist die größte Zahl!'
  else
    if Zahl1 < Zahl3 then
      label4.caption :='Zahl 3 ist die größte Zahl!' ;

  if Zahl2 > Zahl3 then
    label4.caption :='Zahl2 ist die größte Zahl!'
  else
    if Zahl2 < Zahl3 then
     label4.caption :='Zahl3 ist die größte Zahl' ;
end;
Grüße
Klaus

himitsu 17. Sep 2012 15:07

AW: Anweisung erfolderlich, aber Ausdruck vom Typ Beelean?
 
Wieso liegen diese Variablen eigentlich global rum?

Wozu gibt es diese Variablen, obwohl du sie garnicht benutzt? (siehe mein Vorredner)
Denn so wie du sie nutzt, hätten sie lokal sein müssen, fals man sie überhaupt benötugt hätte.

Und das Thema Codeformatierung solltst du dir ganz dringen anschauen.
Eventuell wäre dir dann der Fehler eher aufgefallen.

Nja, eigentlich hatte dir Delphi ja die Fehlerstelle genannt und du hättest dir nur nochmal den Code genau angucken müssen. :zwinker:

DeddyH 17. Sep 2012 15:45

AW: Anweisung erfolderlich, aber Ausdruck vom Typ Beelean?
 
Und kürzer geht das auch noch ;)
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  Maximum: integer;
  Ausgabe: string;
begin
  Maximum := Zahl1;
  Ausgabe := 'Zahl 1';
  if Zahl2 > Maximum then
    begin
      Maximum := Zahl2;
      Ausgabe := 'Zahl 2';
    end;
  if Zahl3 > Maximum then
    begin
      Maximum := Zahl3;
      Ausgabe := 'Zahl 3';
    end;
  label4.caption := Ausgabe + ' ist die größte Zahl!'
end;

vagtler 17. Sep 2012 16:28

AW: Anweisung erfolderlich, aber Ausdruck vom Typ Beelean?
 
Und noch kürzer... :)

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  Maximum: integer;
  Ausgabe: string;
begin
  Maximum := MaxIntValue([Zahl1, Zahl2, Zahl3]);
  if (Maximum = Zahl1) then
    Ausgabe := '1'
  else if (Maximum = Zahl2) then
    Ausgabe := '2'
  else
    Ausgabe := '3';
  label4.caption := Format('Zahl %s ist die größte Zahl', [Ausgabe]);
end;

Darlo 17. Sep 2012 20:50

AW: Anweisung erfolderlich, aber Ausdruck vom Typ Beelean?
 
Zitat:

Zitat von vagtler (Beitrag 1183320)
Und noch kürzer... :)

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  Maximum: integer;
  Ausgabe: string;
begin
  Maximum := MaxIntValue([Zahl1, Zahl2, Zahl3]);
  if (Maximum = Zahl1) then
    Ausgabe := '1'
  else if (Maximum = Zahl2) then
    Ausgabe := '2'
  else
    Ausgabe := '3';
  label4.caption := Format('Zahl %s ist die größte Zahl', [Ausgabe]);
end;

So jetzt noch kein if sondern Case ;-)

Delphi-Quellcode:
Case MaxIntValue([Zahl1, Zahl2, Zahl3]) of
 Zahl1: Ausgabe := '1';
 Zahl2: Ausgabe := '2';
 Zahl3: Ausgabe := '3';
End;
Aber alle vergessen was ist wenn Zahl 1 z.B.: 5 ist und Zahl 2 und 3 = 100

himitsu 17. Sep 2012 20:55

AW: Anweisung erfolderlich, aber Ausdruck vom Typ Beelean?
 
Da CASE konstante Ausdrücke benötigt ... neh, damit geht es nicht.

Bei allen Beispielen wurde die erste "Zahl" angezeigt, welche am Größten ist.
Oder man überlegt es sich und zeigt alle größten "Zahlen" an.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:37 Uhr.
Seite 1 von 2  1 2      

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