Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Verschachtelte iflcauses (https://www.delphipraxis.net/30878-verschachtelte-iflcauses.html)

Binary 30. Sep 2004 15:46


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:
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
was is falsch?

[edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]

gmarts 30. Sep 2004 15:54

Re: Verschachtelte iflcauses
 
Hallo

Schreibe mal anstatt:

Delphi-Quellcode:
If blabla then
begin
  bla bla;
end
else
  if bla bla...
dies:

Delphi-Quellcode:
If blabla then
begin
  bla bla;
end
else
begin
   if bla bla...
end
Dann wirds übersichtlicher....nicht nur für den Compiler. 8)

MfG Gunar

jfheins 30. Sep 2004 15:56

Re: Verschachtelte iflcauses
 
Delphi-Quellcode:
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;
Ich habe einige begins und ends eingefügt, probier das mal aus

Binary 30. Sep 2004 16:15

Re: Verschachtelte iflcauses
 
danke für eure hilfe aber leider kommt immer noch der gleiche Fehler!

Matze 30. Sep 2004 17:15

Re: Verschachtelte iflcauses
 
:hi: Herzlich willkommen in der DP. :party:

Was kommt denn genau für ein Fehler? Kommt irgendeine Meldung?

Binary 30. Sep 2004 17:35

Re: Verschachtelte iflcauses
 
Danke!
das programm läuft ja, theoretisch is ja nichts falsch, aber leider schaltet die ampel nicht auf grün!

Binary 30. Sep 2004 17:53

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

gmarts 30. Sep 2004 18:52

Re: Verschachtelte iflcauses
 
Hi Binary!

Machs dir doch nicht so kompliziert :thumb:

Delphi-Quellcode:
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;
Gruß GM

P.S.: Bei mir hat dein Code funktioniert...die Ampel sprang auf Grün.... !?!?! :gruebel:


Zitat:

... eine Ampel schreiben, sie soll nur aus ifclausen bestehen, ...
Ooops, sorry grad erst gesehen. :oops:

jfheins 30. Sep 2004 19:12

Re: Verschachtelte iflcauses
 
Fehler gefunden !!!

Delphi-Quellcode:
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;
Lösung auch gefunden:
Delphi-Quellcode:
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;
Ich weis, ich bin gemein. :mrgreen: :twisted: :angel: (Bevor du den Fehler postest, schau dir den Code nochmal an ... :zwinker: )

Binary 30. Sep 2004 19:22

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 00:26 Uhr.
Seite 1 von 2  1 2      

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