Autor |
Beitrag |
Farbklecks
Hält's aus hier
Beiträge: 3
|
Verfasst: Do 13.10.11 20:45
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 !
Farbklecks
Moderiert von Narses: Titel geändert, war: "Wichtige Frage zu Timern,Ampeln und Autos".
|
|
platzwart
      
Beiträge: 1054
Erhaltene Danke: 78
Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
|
Verfasst: Do 13.10.11 21: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.
_________________ Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
|
|
Horschdware
      
Beiträge: 744
Erhaltene Danke: 54
Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
|
Verfasst: Do 13.10.11 22: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 .
_________________ Delphi: XE - OS: Windows 7 Professional x64
|
|
Farbklecks 
Hält's aus hier
Beiträge: 3
|
Verfasst: Do 13.10.11 22: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
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Do 13.10.11 23:03
Moin und  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.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Blup
      
Beiträge: 174
Erhaltene Danke: 43
|
Verfasst: Fr 14.10.11 13:53
Ein kleines Beispiel:
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 
Hält's aus hier
Beiträge: 3
|
Verfasst: Mo 17.10.11 18: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
      
Beiträge: 1054
Erhaltene Danke: 78
Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
|
Verfasst: Mo 17.10.11 19:14
Dann probiers mal mit Top z.B. -> damit kannst du das Auto nach oben (-) bzw. nach unten(+) fahren lassen.
_________________ Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
|
|