Entwickler-Ecke
Sonstiges (Delphi) - Frage zu Timern, Ampeln und Autos
Farbklecks - Do 13.10.11 19:45
Titel: Frage zu Timern, Ampeln und Autos
Hallo!
Also ich bin nicht nur neu hier im Forum sondern auch neu beim Thema Delphi.
Das ist mein Problem: Ich arbeite mit Delphi 7. Nun muss ich eine Ampelschaltung erstellen, die nur mit dem Timer arbeitet. Allerdings sollen die verschiedenen Ampelphasen (Rot,Gelb,Grün) auch alle verschieden lange dauern. Meine Frage: Wo und wie mache ich das? das alles soll automatisch gehen. Mit "loadfromfile" lade ich die Bildchen für die Phasen hoch. aber den korrekten Quelltext bekomme ich nicht hin. Bei mir läd sich entweder direkt die rote Phase, aber dann keine andere mehr oder nur die gelbe Phase, die rote wird dann erst garnicht sichtbar.
Ich hoffe mir kann jmd helfen mit dem Quelltext, ich hab schon bei Google gesucht aber nichts für mich verständliches gefunden...
Danke schonmal !:D
Farbklecks :)
Moderiert von
Narses: Titel geändert, war: "Wichtige Frage zu Timern,Ampeln und Autos".
platzwart - Do 13.10.11 20:15
Hi,
na dann zeig uns doch mal deinen Quellcode, dann können wir dir einfacher helfen. Komplett fertigen Quellcode wird dir niemand liefern. Erster Tipp: Über (Timer1.)Interval kannst du die Anzahl der Millisekunden bis zum Auslösen des Timerevents einstellen.
Horschdware - Do 13.10.11 21:00
Besser als Quellcode:
Sag uns doch mal, wie deine Überlegungen zu dem Problem sind. Versuche mal in deutscher Sprache zu beschreiben, wann was passieren soll. Wenn du dir darüber im Klaren bist ist die Umsetzung in Code sicherlich einfacher .
Farbklecks - Do 13.10.11 21:55
Also der Quelltext ist leider nicht hier, dass gesamte Projekt wird auf dem PC meines Freundes gemacht.
Aber auf Deutsch kann ich das erklären ;)
Also wenn ich das Projekt öffne, soll die Ampel zunächst das Bild mit der roten Ampel laden. dieses soll dann 8 sek. lang vorhanden sein, dann soll sich das bild mit der gelben ampel laden für 1 sek. dann soll sich das bild mit der grünen ampel laden für wieder 8 sek, dann das bild mit der rot-gelb ampel wieder für 1 sek. Danach soll dieser prozess immer wiederholt werden.
Ich habe das Ganze mit if und than versucht, nur irgendwas lief falsch...
Danke für die schnellen Antworten ;)
LG
Narses - Do 13.10.11 22:03
Moin und :welcome: in der EE!
Farbklecks hat folgendes geschrieben : |
| Also der Quelltext ist leider nicht hier, dass gesamte Projekt wird auf dem PC meines Freundes gemacht. |
Hast du denn ein Delphi zur Hand? Oder ist das auch nur auf dem anderen PC. :nixweiss:
cu
Narses
Blup - Fr 14.10.11 12:53
Ein kleines Beispiel:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59:
| type TAmpelStatus = (asRot, asGruen, asGelb);
TAmpelphase = record Farbe: TAmpelStatus; Dauer: Integer; end;
TAmpelProgramm = array of TAmpelphase;
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject); private FAmpelProgramm: TAmpelProgramm; FAmpel: Integer; FAmpelTimeOut: TDateTime; procedure SetAmpel(AValue: Integer); procedure ZeigeAmpelRot; procedure ZeigeAmpelGruen; procedure ZeigeAmpelGelb; end;
implementation
procedure TForm1.FormCreate(Sender: TObject); begin SetLength(FAmpelProgramm, 3); FAmpelProgramm[0].Farbe := asRot; FAmpelProgramm[0].Dauer := 10; FAmpelProgramm[1].Farbe := asGruen; FAmpelProgramm[1].Dauer := 10; FAmpelProgramm[2].Farbe := asGelb; FAmpelProgramm[2].Dauer := 5; SetAmpel(0); Timer1.Enabled := True; end;
procedure TForm1.OnTimer1(Sender: TObject); begin if FAmpelTimeOut <= SysUtils.Now then SetAmpel(FAmpel + 1); end;
procedure TForm1.SetAmpel(AValue: Integer); begin if AValue >= Length(FAmpelProgramm) then AValue := 0; FAmpel := AValue; FAmpelTimeOut := SysUtils.Now + EncodeTime(0, 0, FAmpelProgramm[FAmpel].Dauer); case FAmpelProgramm[FAmpel].Farbe; asRot: ZeigeAmpelRot; asGruen: ZeigeAmpelGruen; asGelb: ZeigeAmpelGelb; end; end; |
Farbklecks - Mo 17.10.11 17:52
Also erstmal vielen Dank !
@Narses also Delphi habe ich mir nun mal zugelegt, um alles auszurpobieren. :)
@Blup Vielen Dank !
Ich hab die Ampeschaltung mit allen Phasen jetzt fertig :)
Jetzt möchte ich nur noch die Autos so bewegen, dass es zur schaltung passt. Allerdings verstehe ich nicht ganz, wie ich die Autos dazu bringe um die Ecke zu fahren :?
Ich habe fürs bewegen an sich Left. genutzt.
Danke schonmal, wenn ihr mir nochmal helfen könntet :)
Lg, Farbklecks
platzwart - Mo 17.10.11 18:14
Dann probiers mal mit Top z.B. -> damit kannst du das Auto nach oben (-) bzw. nach unten(+) fahren lassen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!