AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Fehlermeldung: Ausdruckstyp muss BOOLEAN sein
Thema durchsuchen
Ansicht
Themen-Optionen

Fehlermeldung: Ausdruckstyp muss BOOLEAN sein

Ein Thema von Fr33z0r · begonnen am 16. Mai 2006 · letzter Beitrag vom 17. Mai 2006
Antwort Antwort
Seite 1 von 2  1 2      
Fr33z0r

Registriert seit: 29. Mär 2006
15 Beiträge
 
#1

Fehlermeldung: Ausdruckstyp muss BOOLEAN sein

  Alt 16. Mai 2006, 18:06
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;
  Mit Zitat antworten Zitat
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#2

Re: Fehlermeldung: Ausdruckstyp muss BOOLEAN sein

  Alt 16. Mai 2006, 18:12
Ich weiß zwar nicht, ob es der Fehler ist (er ist immerhin an einer komplett anderen Stelle) aber man schreibt nicht
if start = true then begin sondern
if start then begin
Flare

//Edit: Ich sehe da gerad ein If ohne Bedingung
Willy Scheibel
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Fehlermeldung: Ausdruckstyp muss BOOLEAN sein

  Alt 16. Mai 2006, 18:13
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?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Fehlermeldung: Ausdruckstyp muss BOOLEAN sein

  Alt 16. Mai 2006, 18:13
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
Klaus
  Mit Zitat antworten Zitat
Fr33z0r

Registriert seit: 29. Mär 2006
15 Beiträge
 
#5

Re: Fehlermeldung: Ausdruckstyp muss BOOLEAN sein

  Alt 16. Mai 2006, 18:24
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?
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Fehlermeldung: Ausdruckstyp muss BOOLEAN sein

  Alt 16. Mai 2006, 18:29
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 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.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Fehlermeldung: Ausdruckstyp muss BOOLEAN sein

  Alt 16. Mai 2006, 18:37
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
Klaus
  Mit Zitat antworten Zitat
Fr33z0r

Registriert seit: 29. Mär 2006
15 Beiträge
 
#8

Re: Fehlermeldung: Ausdruckstyp muss BOOLEAN sein

  Alt 16. Mai 2006, 18:44
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?)
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Fehlermeldung: Ausdruckstyp muss BOOLEAN sein

  Alt 16. Mai 2006, 19:04
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
Klaus
  Mit Zitat antworten Zitat
Fr33z0r

Registriert seit: 29. Mär 2006
15 Beiträge
 
#10

Re: Fehlermeldung: Ausdruckstyp muss BOOLEAN sein

  Alt 16. Mai 2006, 22:19
und was kann ich dagegen tun?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:14 Uhr.
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