Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Autos für AMpelschaltung


DerCaptain - Mi 21.11.12 21:19
Titel: Autos für AMpelschaltung
Hallo,
Habe ein Problem mit meinem Code.
Irgendwie möchten die Autos nicht anhalten. Hilfe ist gefragt.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TfmKreuzung.tiAutoBlauTimer(Sender: TObject);
begin
  imAutoBlau.Left := imAutoBlau.Left+x;
    if (imAutoBlau.Left = 155)             
      then if imAmpelGruen3.Visible
             then begin
                     eAmpel3.Text := 'Blaues Auto passiert';
                     x := 5
                  end
             else x := 0;
    if imAutoBlau.Left = 860
      then imAutoBlau.Left := 0
end;

Left 155 ist die Stelle vor der Ampel eAmpel3.Text ist ein Editfeld und der Integer x ist global auf 5 definiert.

Könnte es daran liegen, dass der Timer auch die If-Anweisungen verzögert?
Wie kann ich den Code sonst noch umstrukturieren?


ub60 - Mi 21.11.12 22:11

Eventuell so:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TfmKreuzung.tiAutoBlauTimer(Sender: TObject);
begin
  imAutoBlau.Left := imAutoBlau.Left+x;
  if (imAutoBlau.Left = 155)             
    then 
      begin
        x := 0;
        if imAmpelGruen3.Visible
          then 
            begin
              eAmpel3.Text := 'Blaues Auto passiert';
              x := 5
            end
      end
  if imAutoBlau.Left = 860
    then imAutoBlau.Left := 0
end;

ub60


WasWeißDennIch - Do 22.11.12 09:05

Sind es denn genau 155, oder könnten es auch z.B. 156 werden? Evtl. sollte man auf größer oder gleich vergleichen.