![]() |
Verschachtelte iflcauses
Hi @all!
Ich soll in Informatik unter Delphi eine Ampel schreiben, sie soll nur aus ifclausen bestehen, mit der ersten, die pro klick weiter schaltet, von rot auf gelb, auf grün klappt das wunrderbar, bei der zweiten soll die von rot auf rot/gelb dann auf grün, von grün dann auf gelb dann auf rot das probl. habe ich analysiert, sobald ich zwei felder aktiv habe macht der nix mehr, hier mein code der beim button steht
Delphi-Quellcode:
was is falsch?
if s_rot.Brush.Color =clred
then begin s_gelb.Brush.Color :=clyellow; end else if s_gelb.brush.color =clyellow then begin s_rot.Brush.Color :=clwhite; s_gelb.Brush.Color :=clwhite; s_gruen.brush.color :=clgreen; end else if s_gruen.brush.color =clgreen then begin s_gruen.Brush.Color :=clwhite; s_gelb.Brush.Color :=clyellow; end else begin s_gelb.Brush.color :=clwhite; s_rot.brush.color :=clred end [edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit] |
Re: Verschachtelte iflcauses
Hallo
Schreibe mal anstatt:
Delphi-Quellcode:
dies:
If blabla then
begin bla bla; end else if bla bla...
Delphi-Quellcode:
Dann wirds übersichtlicher....nicht nur für den Compiler. 8)
If blabla then
begin bla bla; end else begin if bla bla... end MfG Gunar |
Re: Verschachtelte iflcauses
Delphi-Quellcode:
Ich habe einige begins und ends eingefügt, probier das mal aus
if s_rot.Brush.Color = clred then
begin s_gelb.Brush.Color :=clyellow; end else begin if s_gelb.brush.color =clyellow then begin s_rot.Brush.Color :=clwhite; s_gelb.Brush.Color :=clwhite; s_gruen.brush.color :=clgreen; end else begin if s_gruen.brush.color =clgreen then begin s_gruen.Brush.Color :=clwhite; s_gelb.Brush.Color :=clyellow; end else begin s_gelb.Brush.color :=clwhite; s_rot.brush.color :=clred end; end; end; |
Re: Verschachtelte iflcauses
danke für eure hilfe aber leider kommt immer noch der gleiche Fehler!
|
Re: Verschachtelte iflcauses
:hi: Herzlich willkommen in der DP. :party:
Was kommt denn genau für ein Fehler? Kommt irgendeine Meldung? |
Re: Verschachtelte iflcauses
Danke!
das programm läuft ja, theoretisch is ja nichts falsch, aber leider schaltet die ampel nicht auf grün! |
Re: Verschachtelte iflcauses
Liste der Anhänge anzeigen (Anzahl: 1)
ich lade euch einfach mal alles hoch, ihr könnt es ja dann selbst sehen
|
Re: Verschachtelte iflcauses
Hi Binary!
Machs dir doch nicht so kompliziert :thumb:
Delphi-Quellcode:
Gruß GM
procedure Tf_ampel.b_goClick(Sender: TObject);
begin {Zustände (Kannste zB. im Tag vom Form abspeichern); 0 rot 1 rot/gelb 2 grün 3 gelb} case f_ampel.Tag of 0: begin s_rot.Brush.Color:=clred; s_gelb.Brush.Color :=clwhite; s_gruen.brush.color :=clwhite; end; 1: begin s_rot.Brush.Color:=clred; s_gelb.Brush.Color :=clyellow; s_gruen.brush.color :=clwhite; end; 2: begin s_rot.Brush.Color:=clwhite; s_gelb.Brush.Color :=clwhite; s_gruen.brush.color :=clgreen; end; 3: begin s_rot.Brush.Color:=clwhite; s_gelb.Brush.Color :=clyellow; s_gruen.brush.color :=clwhite; end; end; f_ampel.Tag:=f_ampel.Tag+1; if f_ampel.tag > 3 then f_ampel.Tag:=0; end; P.S.: Bei mir hat dein Code funktioniert...die Ampel sprang auf Grün.... !?!?! :gruebel: Zitat:
|
Re: Verschachtelte iflcauses
Fehler gefunden !!!
Delphi-Quellcode:
Lösung auch gefunden:
if s_rot.Brush.Color = clred then // trifft auch bei rot/gelb zu !!!!!
begin s_gelb.Brush.Color :=clyellow; end else // trifft nur bei gelb zu, bei rot/gelb wird's übersprungen !!! begin if s_gelb.brush.color =clyellow then begin s_rot.Brush.Color :=clwhite; s_gelb.Brush.Color :=clwhite; s_gruen.brush.color :=clgreen; end else begin if s_gruen.brush.color =clgreen then begin s_gruen.Brush.Color :=clwhite; s_gelb.Brush.Color :=clyellow; end else begin s_gelb.Brush.color :=clwhite; s_rot.brush.color :=clred end; end; end;
Delphi-Quellcode:
Ich weis, ich bin gemein. :mrgreen: :twisted: :angel: (Bevor du den Fehler postest, schau dir den Code nochmal an ... :zwinker: )
procedure Tf_ampel.b_goClick(Sender: TObject);
begin if (s_rot.Brush.Color = clred) AND (s_gelb.Brush.Color = clwhite) then begin s_gelb.Brush.Color := clyellow; end else begin if (s_rot.Brush.Color = clred) AND (s_gelb.brush.color = clyellow) then begin s_rot.Brush.Color := clwhite; s_gelb.Brush.Color := clwhite; s_gruen.brush.color := clgreen; end else begin if s_gelb.brush.color := clyellow then begin s_rot.Brush.Color := clred; s_gelb.Brush.Color := clwhite; s_gruen.brush.color := clwhite; end else begin if s_gruen.brush.color = clgreen then begin s_gruen.Brush.Color := clwhite; s_gelb.Brush.Color := clyellow; end else begin s_gelb.Brush.color := clwhite; s_rot.brush.color := clred end; end; end; end; end; |
Re: Verschachtelte iflcauses
sry aber wir müssen diesen kram mit den if clauses machen, wir sind ja noch am anfang, und leider klappt das bei mir net
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:02 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