Entwickler-Ecke

Sonstiges (Delphi) - Warum fährt das Auto nicht mehr los ?? :(


MICtheMAC - Mi 11.12.02 18:03
Titel: Warum fährt das Auto nicht mehr los ?? :(
Hi ihr, wir nehmen grad in der Schule delphi durch, und sollen ein Ampelprogramm schreiben...nun bleibt das auto an der roten ampel stehen, es fährt allerdings bei gruen nicht mehr los....kann mir vielleicht jemand sagen wieso ???? :oops:



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:
procedure TAmpel4.ampelschalten4(Sender: TObject);
begin
if imampeluntenlinksrot.visible = True
then begin
imampeluntenlinksrot.visible := False;
imampeluntenlinksgelbrot.visible := True;
timer4.interval := 1000;
end
else if imampeluntenlinksgelbrot.visible = True
then begin
imampeluntenlinksgelbrot.visible := False;
imampeluntenlinksgruen.visible := True;
timer4.interval := 3000;
end
else if imampeluntenlinksgruen.visible = True
then begin
imampeluntenlinksgruen.visible := False;
imampeluntenlinksgelb.visible := True;
timer4.interval := 1000;
end
else if imampeluntenlinksgelb.visible = True
then begin
imampeluntenlinksgelb.visible := False;
imampeluntenlinksrot.Visible := True;
timer4.interval := 3000;
end
end;

procedure TAmpel4.TimerAutolinksTimer(Sender: TObject);

begin
imauto1.left := imAuto1.left +10;
if imAuto1.left > 725
then
imAuto1.left := 1;
if (imampeluntenlinksrot.visible = true)and(imauto1.left < 200)and(imauto1.left>180)
then
timerautolinks.enabled := false
end;
end.


Klabautermann: Code Tags hinzugefügt.


Delete - Mi 11.12.02 18:10

Könntest du den Code mal bitte formatieren und uns sagen was das für Komponenten sind: imampeluntenlinksrot.

Ansonsten würde ich sagen Benzin alle, Motor abgewürgt, Plattfuß, ..... Aber ich bin kein Automechaniker. :wink: Soll heißen, dein Topic ist etwas daneben. :roll:


a.C.k - Mi 11.12.02 18:35

Wo sol es denn losfahren?

Habe den Quelltext mal etwas geordnet....

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:
procedure TAmpel4.ampelschalten4(Sender: TObject);
begin
  if imampeluntenlinksrot.visible = True then
  begin
    imampeluntenlinksrot.visible := False;
    imampeluntenlinksgelbrot.visible := True;
    timer4.interval := 1000;
  end else
    if imampeluntenlinksgelbrot.visible = True then
    begin
      imampeluntenlinksgelbrot.visible := False;
       imampeluntenlinksgruen.visible := True;
       timer4.interval := 3000;
    end else
      if imampeluntenlinksgruen.visible = True then
      begin
        imampeluntenlinksgruen.visible := False;
        imampeluntenlinksgelb.visible := True;
        timer4.interval := 1000;
      end else
        if imampeluntenlinksgelb.visible = True then
        begin
          imampeluntenlinksgelb.visible := False;
          imampeluntenlinksrot.Visible := True;
          timer4.interval := 3000;
        end;
end;

procedure TAmpel4.TimerAutolinksTimer(Sender: TObject);

begin 
  imauto1.left := imAuto1.left +10;
  if imAuto1.left > 725 then
    imAuto1.left := 1;
  if (imampeluntenlinksrot.visible = true)and(imauto1.left < 200)and(imauto1.left>180) then
    timerautolinks.enabled := false
end;
end.


MICtheMAC - Mi 11.12.02 19:04

also, imampeluntenlinksrot/gelb/gruen/rotgelb sind verschiedene Images mit jeweils roter/gruener...usw. ampel...
imAuto is ein Auto-Image
das auto bleibt zwischen 180 und 200 stehen, also in meinem fall vor der weißen Ampel-halte-linie !!
wenn die ampel auf gruen springt (imampeluntenlinksgruen.visible = true)
dann soll das auto von der haltestelle an wieder losfahren, genauso wie es vor der rot-phase fur...leider fährt es gar nicht...
übrigens danke für die übersichtliche darstelung des codes 8)


Wolff68 - Mi 11.12.02 20:51

Also Du hälst Dein Auto doch an, indem Du dessen Timer auf enabled := false setzt. Daher würde ich vorschlagen bei grüner Ampel diesen Timer doch auch enabled := true zu setzen... Damit sollte das Auto weiterfahren.

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
...
    if imampeluntenlinksgelbrot.visible = True then 
    begin 
      imampeluntenlinksgelbrot.visible := False; 
       imampeluntenlinksgruen.visible := True; 
       timer4.interval := 3000; 
       timerautolinks.enabled := true; // Losfahren lassen
    end else
...


MICtheMAC - Do 12.12.02 00:29

hi wolff,
danke für den tipp, hat einwandfrei geklappt :)
8)
bis zum nächsten problem :wink: