![]() |
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:
:gruebel: :gruebel: :gruebel:
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; |
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:
sondern
if start = true then begin
Delphi-Quellcode:
if start then begin
Flare //Edit: Ich sehe da gerad ein If ohne Bedingung :mrgreen: |
Re: Fehlermeldung: Ausdruckstyp muss BOOLEAN sein
Formatier das einfach mal gescheit:
Delphi-Quellcode:
Fällt dir jetzt was auf?
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; |
Re: Fehlermeldung: Ausdruckstyp muss BOOLEAN sein
Delphi-Quellcode:
Klammern gesetzt, eingerückt, ein if entfernt, mehrere ifs durch case ersetzt.
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; randomize sollte nur bei Programmstart aufgerufen werden. Grüße Klaus |
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? |
Re: Fehlermeldung: Ausdruckstyp muss BOOLEAN sein
Zitat:
Delphi-Quellcode:
ist ein if, hinter dem nichts steht.
if delay = 1 then
Der Fehler sitzt nicht immer dort, wo der compiler meint, dass er sitzt. Du musst beim Fehlersuchen schon das Hirn einschalten. |
Re: Fehlermeldung: Ausdruckstyp muss BOOLEAN sein
wie wird help denn 0?
Delphi-Quellcode:
und vielleicht für eine neue Frage einen neuen Thread aufmachen.
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. Grüße Klaus |
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?) |
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:
Grüßeif start then begin INC(level); help:=level + 3; start:=false; end; Klaus |
Re: Fehlermeldung: Ausdruckstyp muss BOOLEAN sein
und was kann ich dagegen tun?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:31 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