![]() |
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
|
Re: Verschachtelte iflcauses
WUNDERBARR !!!!!!! ES KLAPPTT!!!!! VIELEN DANK!!!
Zwar kam bei einem if einm := vor und es musste nur = sein aber darauf kam ich noch!! VIELEN DANK!!!! |
Re: Verschachtelte iflcauses
Glückwunsch.
Nächstes mal einfach ein Diagramm (z.B. PAP) auf Papier malen, Computer ausmachen und Diagramm analysieren;... so findet man viel leichter solche Fehler. :) Sag deinem Lehrer mal, daß if-clauses eine ziemlich sehr ungünstige Lösung für eine Ampelschaltung sind! :warn: |
Re: Verschachtelte iflcauses
habe ich ja gemacht, aber ich wusste den and befehl gar nicht, unser Lehrer is eine Sie und konnte am anfang nichtmal den beamer bedienen, sie verteilt aufgaben, und meint dann viel spaß und dann nach 4 stunden gibs ne lösung, echt toll, das eine bessere Lösung vorhanden is, sagten ihr viele aber sie meinten wir sollten bei dem bleiben, weil wir mit sowas komplizierte if else dinger lernen
|
Re: Verschachtelte iflcauses
nur eines kapiere ich nicht, das mit diesem and, ich meine, wo is das problem, das sagt ja nur, wenn das und das hier der fall sind, dannn mach das da, aber bei mir stimmte der fall doch zu,
die ampel war rot gelb und ich meinte, wenn ampel gelb, dann mache grün, wo liegt das probl.? |
Re: Verschachtelte iflcauses
deine behandlung für rot/gelb wird nie aufgerufen, da bereits if Ampel = rot eintritt, und rot/gelb nur aufgerufen wurde, wenn Ampel<>rot !!!
|
Re: Verschachtelte iflcauses
DU HAST RECHT !!!! DU HAST VOLLKOMMEN RECHT!!! JUHUUU DIE ERDE IST WIEDER EINE KUGEL!
Ich wäre echt nich drauf gekommen, aber nun endlich habe ich es rausbekommen, ich denke, das wird mich auch in zukunft viel weiterbringen, ich hätte mehr dran denken müssen wie das fdunktioniert, viel logischer! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:34 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