@Sir Rufo: Dachte ich zunächst auch, doch als ich im Debuger geguckt habe wo es denn hapert, zeigte er mir an:
Sender() also das Sender keinen Wert hat
Müsste ich das on Timer Event dann nich auch anders zuweisen
Timer[i].OnTimer := onTimer(Sender); // das Sender
?
Wenn Sender keinen Wert hat, dann zeigt der Debugger
nil an.
Da ist zu 99.9999999% genau die Timer-Instanz drin, die das Event aufruft.
Falls du es nicht glaubst:
Delphi-Quellcode:
procedure TSpielfeld.onTimer(Sender: TObject);
begin
(Sender as TTimer).Enabled := False;
ShowMessage( Sender.ClassName ); // --> TTimer
(Sender as TTimer).Enabled := True;
end;
Witzig ist, wenn das nicht so ist, wieso sollte das denn hier (in deinem Code) funktionieren?
Delphi-Quellcode:
procedure TSpielfeld.onTimer(Sender: TObject);
begin
if Sender = Timer[0] // <-- ja wenn da nichts in Sender ist
...
(Sender as TTimer).Enabled := False; // <-- ???
bewegeBikes(Sender);//stellt nach Bewegung (Sender as TTimer).Enabled := True // <-- ???
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)