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



BeitragVerfasst: Mi 21.11.12 21:19 
Hallo,
Habe ein Problem mit meinem Code.
Irgendwie möchten die Autos nicht anhalten. Hilfe ist gefragt.

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 764
Erhaltene Danke: 127



BeitragVerfasst: Mi 21.11.12 22:11 
Eventuell so:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 653
Erhaltene Danke: 160



BeitragVerfasst: 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.