AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ampelschaltung

Ein Thema von NewDelphiBenutzer · begonnen am 30. Sep 2010 · letzter Beitrag vom 30. Sep 2010
Antwort Antwort
Seite 2 von 2     12   
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#11

AW: Ampelschaltung

  Alt 30. Sep 2010, 17:53
Direkt auf die Farben zu gehen ist Quark.
Es gibt doch Ampelphasen, siehe hier.
Zusätzlich zur Phase 1 bis 4 kommt noch die Phase 0 hinzu (das bedeutet alles aus; bzw. Farbe Schwarz)
Delphi-Quellcode:
var
   ampelphase : integer; // 0 bis 4
Bei jedem Klick auf den Button wird die Ampelphase um eins hochgezählt,
aber wenn die aktuelle Ampelphase schon = 4 ist springt man zurück auf 1.
Die Abfolge der Ampelphasen wäre also:
0 - 1 - 2 - 3 - 4 - 1 - 2 - 3 ...

Jetzt muss man nur noch der Ampelphase eine Farbe zuordnen und schon ist man fertig.
Ampelphase 2 wäre übrigens Rot & Geld ==> Orange.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#12

AW: Ampelschaltung

  Alt 30. Sep 2010, 17:54
Wie war das mit Flussdiagramm? Rot - Gelb - Grün - Gelb (sind 4 Zustände)

So, wie kommt man jetzt von dem ersten Zustand auf den nächsten? Ganz einfach. Zuerst definiert man, dass man sich beim 1. Zustand befindet. Die Ampel ist also rot.
Delphi-Quellcode:
AmpelFeld.Color := clRed;
Zustand := 1;
So, jetzt wird der Button gedrückt. Dadurch änderst du zuerst den Zustand.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Zustand := Zustand + 1; // Zustand ist eine globale Variable (var Zustand: Integer)
  if Zustand > 4 then
    Zustand := 1;
So, jetzt gehst du immer wieder alle Zustände durch. Visuell passiert jetzt noch nichts. Das kommt jetzt erst:
Delphi-Quellcode:
  if (Zustand = 1) then // Ampel wird ROT
    AmpelFeld.Color := clRed;

  if (Zustand = 2) then // Ampel wird das erste mal Gelb (oder Rot/Gelb)
    AmpelFeld.Color := clYellow;

  if (Zustand = 3) then // Ampel wird grün
    AmpelFeld.Color := clGreen;

  if (Zustand = 4) then // Ampel wird das 2. Mal Gelb
    AmpelFeld.Color := clYellow;
end;
So, jetzt musst du das erst einmal verstehen. Dazu erklärst DU mir mal, was der obrige Code macht.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
NewDelphiBenutzer

Registriert seit: 30. Sep 2010
14 Beiträge
 
#13

AW: Ampelschaltung

  Alt 30. Sep 2010, 17:55
das ist mein quelltext keine ahnugn wie man den anders einfügt


procedure TForm1.AmpelBtnClick(Sender: TObject);
begin
if form1.color=clgreen
then form1.color:=clyellow
else form1.color:=clgreen;
if form1.color=clyellow
then form1.color:=clred;



end;




aber das geht auch nicht es wird einfach grün dann rot dann wieder grün und ich weiß nichjt wie man das ändert
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#14

AW: Ampelschaltung

  Alt 30. Sep 2010, 18:09
Delphi-Quellcode:
if form1.color=clgreen then
  form1.color:=clyellow
else
  form1.color:=clgreen;

if form1.color=clyellow then
  form1.color:=clred;
Oben setzt du es auf gelb, wenn es grün ist. Direkt da drunter gehst du auf rot, wenn es gelb ist. Du springst also immer von gelb auf rot. Wenn man seinen Code etwas strukturiert wie in diesem Post fällt sowas auch auf. Und nimm dir die Anregungen hier doch bitte etwas zu Herzen, besonders das mit den Delphi-Tags... Dieses Husch-Pfusch-Verhalten und Hauptsache die Aufgabe fertig bekommen wird dich nicht weiter bringen, weder beim lernen von Delphi, noch bei der Hilfsbereitschaft der anderen Helfer hier...
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#15

AW: Ampelschaltung

  Alt 30. Sep 2010, 18:36
Tipp:
Delphi-Quellcode:
if (A) then
  B
else
  C;
Wenn A wahr ist (z.B. eine Zahl hat einen bestimmten Wert oder dein Formular ist Grün), dann wird der then-Teil abgearbeitet. Das wäre der Befehl B. Der macht bei dir das Formular Gelb. D.h. wenn dein Formular Grün ist, wird deines Gelb. Im Else Teil steht alles, was passiert, wenn die Bedingung A nicht wahr ist. Hier wir der Befehl C ausgeführt, der wäre bei dir, dass das Formular Grün wird.

C kann aber auch mehrere Befehle enthalten:
Delphi-Quellcode:
if (A) then
  B
else
begin
  C1;
  C2;
end;
Möchtest du überprüfen, ob die Ampel Gelb war, und du hast ausgeschlossen, dass sie Grün war kannst du es so machen:
Delphi-Quellcode:
if (A) then
  B
else
begin
  if (D) then
    E;
end;
Jetzt wird geguckt, ob die Ampel grün war. War sie das nicht wird im else Teil gesprungen. Wenn sie dort Gelb war (= D), dann wird die Ampel rot (= E). Natürlich kann du da auch noch ein else-Zweig machen.

Delphi-Quellcode:
if (A) then
  B
else
begin
  if (D) then
    E
  else
    C;
end;
Also, wenn sie weder grün ist, noch gelb, dann wird der Befehl C ausgeführt. Das wäre jetzt der Fall wenn die Ampel zum Beispiel Rot ist (oder aus). Das heißt jetzt wird es Gelb (wir gehen davon aus, dass die Ampel nie aus sein wird).

Das kannst du übrigens weiter vereinfachen:
Delphi-Quellcode:
if (A) then
  B
else if (D) then
  E
else
  C;
Das bedeutet so viel wie:
Code:
Wenn die Bedingung A wahr ist, dann
  Führe den Befehl B aus
Ansonsten (= else) wenn die Bedingung D wahr ist, dann (= if)
  Führe den Befehl E aus
Ansonsten
  Führe den Befehl C aus
Bei dir wäre das:
Delphi-Quellcode:
if form1.color=clgreen then
  form1.color:=clyellow
else if form1.color=clyellow then
  form1.color:=clred
else
  form1.color:=clYellow;
Ich glaube darauf wolltest du mit deiner Konstruktion hinaus.

MfG
Fabian

PS: Lasse das form1. weg, wenn es in einer Methode ist, die procedure/function TForm1.[...] heißt. Das brauchst du nicht, und könnte irgendwann zu Problemen führen (hier nicht, aber es ist besser, wenn man sich das jetzt schon angewöhnt).
PPS: Wegen der Tags: Markiere deinen Quelltext und klicke auf den Delphi Helm (Name:  delphi.gif
Hits: 32
Größe:  1,0 KB) oben in der Reihe!
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler

Geändert von xZise (30. Sep 2010 um 18:41 Uhr) Grund: +Delphi Helm Erklärung;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 15:25 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