Autor Beitrag
Farbklecks
Hält's aus hier
Beiträge: 3



BeitragVerfasst: 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 !:D
Farbklecks :)

Moderiert von user profile iconNarses: Titel geändert, war: "Wichtige Frage zu Timern,Ampeln und Autos".
platzwart
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 744
Erhaltene Danke: 54

Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 13.10.11 23:03 
Moin und :welcome: in der EE!

user profile iconFarbklecks hat folgendes geschrieben Zum zitierten Posting springen:
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

_________________
There are 10 types of people - those who understand binary and those who don´t.
Blup
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 174
Erhaltene Danke: 43



BeitragVerfasst: Fr 14.10.11 13:53 
Ein kleines Beispiel:
ausblenden volle Höhe 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; {Index im Ampelprogramm}
    FAmpelTimeOut: TDateTime; {wann wird das nächste mal umgeschalten}
    procedure SetAmpel(AValue: Integer);
    procedure ZeigeAmpelRot;
    procedure ZeigeAmpelGruen;
    procedure ZeigeAmpelGelb;
  end;
{}
implementation
{}
procedure TForm1.FormCreate(Sender: TObject);
begin
  {Ampel programmieren}
  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;
  {Ampelprogramm starten}
  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
  {am Ende des Programms von vorn beginnen}
  if AValue >= Length(FAmpelProgramm) then
    AValue := 0;
  {umschalten}
  FAmpel := AValue;
  {wann wird das nächste mal umgeschalten}
  FAmpelTimeOut := SysUtils.Now + EncodeTime(00, FAmpelProgramm[FAmpel].Dauer);
  {Status ausgeben}
  case FAmpelProgramm[FAmpel].Farbe;
    asRot:   ZeigeAmpelRot;
    asGruen: ZeigeAmpelGruen;
    asGelb:  ZeigeAmpelGelb;
  end;
end;
Farbklecks Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: 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)