Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fehlermeldung: Ausdruckstyp muss BOOLEAN sein (https://www.delphipraxis.net/69536-fehlermeldung-ausdruckstyp-muss-boolean-sein.html)

Fr33z0r 16. Mai 2006 18:06


Fehlermeldung: Ausdruckstyp muss BOOLEAN sein
 
Moin moin liebe Sportsfreunde!
Ich bin gerade dabei ein Spiel zu coden, bei dem der Computer zufällig 4 farbige buttons nacheinander drückt, die der user dann wiederholen muss (manche kennen das spiel unter dem namen "Simon")

Ich bin gerade dabei, dass der Computer in Level 1 vier buttons zufällig drücken soll und bekommen die fehlermeldung:
[Fehler] Unit1.pas(127): Ausdruckstyp muss BOOLEAN sein
ich finde aber einfach den fehler nicht. kann mir jemand helfen?
hier mein Text:

Delphi-Quellcode:
var
  Form1: TForm1;
  delay: Integer = 1;
  level: Integer = 0;
  start: boolean = true;

implementation

procedure TForm1.Timer1Timer(Sender: TObject);
var
   r, help: Integer;
   begin
if start = true then begin
   INC(level);
   help:=level + 3;
   start:=false;
                  end;
   if
         if delay = 1 then  begin
                                      randomize;
                                      r:=Random(4);
                                      if r=0 then panel7.Color:=clRed;
                                      if r=1 then panel4.Color:=clLime;
                                      if r=2 then panel5.Color:=clYellow;
                                      if r=3 then panel6.Color:=clBlue;
                                      delay:=2;
                                     end
                              else  begin
                                      panel4.Color:=clGreen;
                                      panel5.Color:=clOlive;
                                      panel6.Color:=clNavy;
                                      panel7.Color:=clMaroon;
                                      delay:=1;
                                      DEC(help);
                                        if help = 0 then timer1.Enabled:=false;
                                     end; // <-- hier soll laut Delphi der Fehler sein
end;
:gruebel: :gruebel: :gruebel:

Flare 16. Mai 2006 18:12

Re: Fehlermeldung: Ausdruckstyp muss BOOLEAN sein
 
Ich weiß zwar nicht, ob es der Fehler ist (er ist immerhin an einer komplett anderen Stelle) aber man schreibt nicht
Delphi-Quellcode:
if start = true then begin
sondern
Delphi-Quellcode:
if start then begin

Flare

//Edit: Ich sehe da gerad ein If ohne Bedingung :mrgreen:

Luckie 16. Mai 2006 18:13

Re: Fehlermeldung: Ausdruckstyp muss BOOLEAN sein
 
Formatier das einfach mal gescheit:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  r, help          : Integer;
begin
  if start = true then begin
    INC(level);
    help := level + 3;
    start := false;
  end;
  if
    if delay = 1 then begin
    randomize;
    r := Random(4);
    if r = 0 then panel7.Color := clRed;
    if r = 1 then panel4.Color := clLime;
    if r = 2 then panel5.Color := clYellow;
    if r = 3 then panel6.Color := clBlue;
    delay := 2;
  end
  else begin
    panel4.Color := clGreen;
    panel5.Color := clOlive;
    panel6.Color := clNavy;
    panel7.Color := clMaroon;
    delay := 1;
    DEC(help);
    if help = 0 then timer1.Enabled := false;
  end; // <-- hier soll laut Delphi der Fehler sein
end;
Fällt dir jetzt was auf?

Klaus01 16. Mai 2006 18:13

Re: Fehlermeldung: Ausdruckstyp muss BOOLEAN sein
 
Delphi-Quellcode:
var
  Form1: TForm1;
  delay: Integer = 1;
  level: Integer = 0;
  start: boolean = true;

implementation

procedure TForm1.Timer1Timer(Sender: TObject);
var
   r, help: Integer;
begin
  if start then
    begin
      INC(level);
      help:=level + 3;
      start:=false;
    end;
   if (delay = 1) then
     begin
       r:=Random(4);
       case r of
         0: panel7.Color:=clRed;
         1: panel4.Color:=clLime;
         2: panel5.Color:=clYellow;
         3: panel6.Color:=clBlue;
       end;
       delay:=2;
     end
   else  
     begin
       panel4.Color:=clGreen;
       panel5.Color:=clOlive;
       panel6.Color:=clNavy;
       panel7.Color:=clMaroon;
       delay:=1;
       DEC(help);
       if (help = 0) then timer1.Enabled:=false;
     end;
end;
Klammern gesetzt, eingerückt, ein if entfernt, mehrere ifs durch case ersetzt.
randomize sollte nur bei Programmstart aufgerufen werden.
Grüße
Klaus

Fr33z0r 16. Mai 2006 18:24

Re: Fehlermeldung: Ausdruckstyp muss BOOLEAN sein
 
danke die fehlermeldung ist jetzt weg
woran es lag hab ich aber bis jetzt immernoch nicht gefunden :( ich überleg nachher nochmal stark


ich habe jetzt aber erstmal den code von klaus genommen
folgendes passiert: zufällig ändern die panels für 1 sekunde ihre farbe und wieder zurück
nach meiner logik sollte das ganze aber nur 4 mal geschehen, da die variable help ja theoretisch 0 wird und der timer ausgeschaltet werden sollte. jedoch blinkt mehr als 4 mal ein panel auf, warum?

RavenIV 16. Mai 2006 18:29

Re: Fehlermeldung: Ausdruckstyp muss BOOLEAN sein
 
Zitat:

Zitat von Fr33z0r
danke die fehlermeldung ist jetzt weg
woran es lag hab ich aber bis jetzt immernoch nicht gefunden :( ich überleg nachher nochmal stark

über der Zeile
Delphi-Quellcode:
if delay = 1 then
ist ein if, hinter dem nichts steht.
Der Fehler sitzt nicht immer dort, wo der compiler meint, dass er sitzt.
Du musst beim Fehlersuchen schon das Hirn einschalten.

Klaus01 16. Mai 2006 18:37

Re: Fehlermeldung: Ausdruckstyp muss BOOLEAN sein
 
wie wird help denn 0?

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
   r, help: Integer;
begin
  if start then
    begin
      INC(level);
      help:=level + 3;  // bei jedem Timeraufruf wird help auf 4 gesetzt
      start:=false;
    end;

   if (delay = 1) then
     begin
       r:=Random(4);
       case r of
         0: panel7.Color:=clRed;
         1: panel4.Color:=clLime;
         2: panel5.Color:=clYellow;
         3: panel6.Color:=clBlue;
       end;
       delay:=2;
     end
   else  
     begin
       panel4.Color:=clGreen;
       panel5.Color:=clOlive;
       panel6.Color:=clNavy;
       panel7.Color:=clMaroon;
       delay:=1;
       DEC(help);                  // hier ist help = 3
       if (help = 0) then timer1.Enabled:=false;
     end;
end; // und hier ist der Timer zuende.
und vielleicht für eine neue Frage einen neuen Thread aufmachen.

Grüße
Klaus

Fr33z0r 16. Mai 2006 18:44

Re: Fehlermeldung: Ausdruckstyp muss BOOLEAN sein
 
aber dadurch dass die variable "start" gesetzt wurde, wird "help" doch nur beim 1. mal auf 4 gesetzt oder nicht?
(ich denk ma für die kleine frage kann der thread bleiben oder?)

Klaus01 16. Mai 2006 19:04

Re: Fehlermeldung: Ausdruckstyp muss BOOLEAN sein
 
welche variable start?
Die Variable start ist boolean.
Wenn vor dem Aufruf des Timers der level immmer 0 ist
ist help beim Start immer 4!

Delphi-Quellcode:
 
if start then
  begin
    INC(level);
    help:=level + 3;  
    start:=false;
  end;
Grüße
Klaus

Fr33z0r 16. Mai 2006 22:19

Re: Fehlermeldung: Ausdruckstyp muss BOOLEAN sein
 
und was kann ich dagegen tun?


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:16 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