Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Ordinaltyp bei case of (https://www.delphipraxis.net/77714-ordinaltyp-bei-case.html)

manialf 23. Sep 2006 18:28


Ordinaltyp bei case of
 
Hallo,

ich habe jetzt seit 2 Wochen Info und wir sollen eine Ampel programmieren. ich bin jetzt soweit:
Problem: In der zeile case zustand of kommt die Meldung Ordinaltyp benötigt. keine Ahnung wie das geht. Hoffe auf eure Hilfe...

Delphi-Quellcode:
implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
begin
halt;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin

w:= 390;
h:= 510;

setbounds((screen.Width-w)div 2,(screen.Height-h)div 2,w,h)

end;

procedure TForm1.Button1Click(Sender: TObject);
begin

case 'zustand' of

1: begin
   Sh_red.Brush.Color :=clRed;
   Sh_yellow.Brush.Color :=clWhite;
   Sh_lime.Brush.Color:=clWhite;
    end;

2: begin
   Sh_red.Brush.Color :=clRed;
   Sh_yellow.Brush.Color :=clYellow;
   Sh_lime.Brush.Color:=clWhite;
    end;

3: begin
   Sh_red.Brush.Color :=clWhite;
   Sh_yellow.Brush.Color :=clWhite;
   Sh_lime.Brush.Color:=clLime;
    end;

4: begin
   Sh_red.Brush.Color :=clWhite;
   Sh_yellow.Brush.Color :=clYellow;
   Sh_lime.Brush.Color:=clLime;
    end;

end;

if zustand >4 then zustand := 1;

end;

end.

Helmi 23. Sep 2006 18:31

Re: Ordinaltyp bei case of
 
Hallo,

ich vermute das "zustand" eine Integer-Variable ist.

durch die zwei anführungszeichen machst du einen String

richtig muss es heissen:
Delphi-Quellcode:
case zustand of

Sunlight7 23. Sep 2006 18:32

Re: Ordinaltyp bei case of
 
Hallo, nimm die '' raus, dann klappts, Case muß Ordinal sein, kein String.

Edit: Ups, da war einer schneller :wink:

Balu der Bär 23. Sep 2006 18:33

Re: Ordinaltyp bei case of
 
Nach case muss eine Integervariable oder eine Charvariable übergeben werden. Oder wie willst du sonst prüfen? ;)
Mach also einfach die '' von zustand weg.

Muetze1 23. Sep 2006 18:45

Re: Ordinaltyp bei case of
 
Zitat:

Zitat von Balu der Bär
Nach case muss eine Integervariable oder eine Charvariable übergeben werden.

Oder ein Enumeration Type, Word, etc. Schreib doch lieber gleich Ordinaltyp wie der Compiler...

manialf 23. Sep 2006 23:52

Re: Ordinaltyp bei case of
 
Vielen vielen Dank für die Hilfe.

Ich habe das ganze geändert, aber wenn ich das Projekt starte und auf Button 1 klickt passiert überhaupt nichts. :(

Matze 23. Sep 2006 23:55

Re: Ordinaltyp bei case of
 
Hi

Zitat:

Zitat von manialf
Ich habe das ganze geändert, aber wenn ich das Projekt starte und auf Button 1 klickt passiert überhaupt nichts. :(

Kann es sein, dass der Fall Eintritt, bei dem zustand > 4 ist? Da du diesen dann nach der case-Anweisung auf 1 setzt, passiert natürlich nichts. Schreibe also das hier vor die case-Anweisung:

Delphi-Quellcode:
if zustand > 4 then zustand := 1;

Dax 23. Sep 2006 23:56

Re: Ordinaltyp bei case of
 
Wird zustand überhaupt irgendwo zugewiesen?

Helmi 24. Sep 2006 08:33

Re: Ordinaltyp bei case of
 
Du solltest im OnCreate der Form der Variable "zustand" einen bestimmten Wert zu weisen, z. B. 1

Die Abfrage:
Delphi-Quellcode:
if zustand >4 then zustand := 1;
wird dir nicht viel bringen, da deine Ampel nach Zustand = 4 wieder auf Zustand = 1 springen muss.
Bei deiner If-Abfrage würd dies erst bei Zustand = 5 oder höher passieren.

du solltest:
Delphi-Quellcode:
if zustand = 4 then zustand := 1;
schreiben.

Wenn du diese Hinweise befolgst, dann dürf deine Ampel auch ampeln :-)

manialf 24. Sep 2006 11:53

Re: Ordinaltyp bei case of
 
Wow . das ist echt klasse hier :) So viele schnelle Hilfe. Vielen Danke ich probiers aus :)


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