Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Variable (https://www.delphipraxis.net/31183-variable.html)

Klimpel 5. Okt 2004 18:57


Variable
 
Also ich versuch eine Ampel zu programmieren, die von Rot auf grün schaltet. Und das immer nach einer bestimmten Zeit.Wie das mit dem Timer funzt weiß ich, nur wie bekomme ich das hin das die Ampel immer von rot und grün wechselt?
Dafür brauch ich doch eine variable oder? Und wenn ja wie benutz ich die...


Mit freundlichem Klimpel

JasonDX 5. Okt 2004 19:01

Re: Variable
 
Einfach abfragen:
wenn die Ampel grün ist (z.B. ein Integer = 1 ist)
dann schalt sie um auf rot (der Integer = 2)
und sonst schalt sie um auf grün (der Integer = 1)
kann man aber auch mit einem eigenen Typ machen (TAmpelFarbe = (afRot, afGruen))
und wenn du nur rot und grün hast, kannst du 'nen boolean nehmen, sagen Rot = false und mit der anweisung
Variable := not Variable;
zwischen rot und grün umschalten....

Aenogym 5. Okt 2004 19:01

Re: Variable
 
hi klimpel,

wie "schaltest" du die ampel? du könntest einerseits eine variable nutzen, um den aktuellen status zu speichern, oder du greifst direkt auf das ampel-objekt zu, falls es einen gespeicherten status hat.

mit einer variable könnte es so gehen:

Delphi-Quellcode:
var TrafficLightIsRed: boolean; //global oder im public-abschnitt des formulars definieren
{ ... }
begin
  if TrafficLightIsred then
    //trafficlight.state := green; (oder so ;) )
  else
    //trafficlight.state := red; (oder so ;) )
end;
Aenogym

alcaeus 5. Okt 2004 19:03

Re: Variable
 
Hi klimpel,

um eine Ampelschaltung ging es erst vor kurzem. Vielleicht hilft dir dieser Tipp

Greetz
alcaeus

Klimpel 5. Okt 2004 20:42

Re: Variable
 
Ich will erstmal nur von auf grün wechsel;



procedure TForm1.StartClick(Sender: TObject);
begin
timer1.Enabled:=true;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
a:=2;

grün.Hide;

Image1.Picture.LoadFromFile('Ampel.jpg');
Image1.stretch:=true;
grün.Picture.LoadFromFile('grün.bmp');
rot.Picture.LoadFromFile('rot.bmp');

end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin



If a = 1 then begin rot.Visible:=true; grün.Visible:=false;
a:=2;
end;
If a = 2 then begin rot.visible:=false; grün.Visible:= true;
a:=1;


end;

end;
end.




Jetzt hab ich nur irgendwie das problem das die Ampel die ganze ZEit grün bleibt...der timer funktioniert zwar aber springt immer wieder nur auf grün...

alcaeus 5. Okt 2004 20:53

Re: Variable
 
Hi klimpel,

bitte verwende in Zukunft die [ delphi]-Tags. Damit wird der Code übersichtlicher.
Der Fehler ist leicht gefunden. Sehen wir uns das signifikante Codestück an:
Delphi-Quellcode:
If a = 1 then
begin
  rot.Visible:=true;
  grün.Visible:=false;
  a:=2;
end;
If a = 2 then
begin
  rot.visible:=false;
  grün.Visible:= true;
  a:=1;
end;
Soll die Ampel rot werden (a = 1), so zeigst du rot an, blendest grün aus, und setzt a auf 2. Bei der nächsten Abfrage trifft wieder zu, also wird grün wieder eingeblendet. Die Lösung ist einfach: ein else:
Code:
If a = 1 then
begin
  rot.Visible:=true;
  grün.Visible:=false;
  a:=2;
end [color=red]else[/color] If a = 2 then
begin
  rot.visible:=false;
  grün.Visible:= true;
  a:=1;
end;
Greetz
alcaeus

[edit]Verf****e BB-Tags :evil:[/edit]


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