Einzelnen Beitrag anzeigen

TForm1

Registriert seit: 11. Jan 2014
128 Beiträge
 
FreePascal / Lazarus
 
#1

Rekursiver Methodenaufruf mit TTimer

  Alt 22. Nov 2014, 20:06
Hallo zusammen,

ich habe mehrere Fragen zur Lösung folgenden Problems: Ich habe eine Methode mit Parametern, welche einmal aufgerufen wird und dann diverse Prüfungen vornimmt. Falls diese Prüfungen negativ ausfallen, soll nach 5 Sekunden dieselbe Methode noch mal mit denselben Werten als Parameter aufgerufen werden.
Delphi-Quellcode:
procedure TFoo.macheIrgendEtwas(aValue: integer, Sender: TObject);
var aTimer: TTimer;
   ergebnis: boolean;
begin
   if assigned(aTimer) then //Assigned nur nach FreeAndNil?
   begin
      if aTimer.Enabled then aTimer.Enabled:= false;
   end else aTimer:= TTimer.Create(nil);
   ergebnis:=pruefe(aValue);
   if ergebnis = false then
   begin
      aTimer.Interval:= 5000;
      aTimer.OnTimer:= macheIrgendetwas; //wie kann man hier aValue übergeben?
      aTimer.Enabled:= true;
      exit;
   end else aTimer.FreeAndNil;
//Hier entsprechend weitere Behandlungen
end;
1. Frage: Wie kann ich ein Objekt prüfen, wenn es noch gar nicht existiert und vorher auch nicht existierte? Kann man auch in so einem Fall assigned() verwenden?
2. Frage: Wie kann ich das OnTimer event so aufrufen, dass er immer den Parameter vom vorherigen Aufruf benutzt?
3. Frage: So, wie ich oben das OnTimer- Event festlege, sagt der Compiler mir immer: Got TFoo.TFoo.macheIrgendEtwas(LongInt, TObject), expected <procedure variable type of procedure(TObject) of object;Register>, was mache ich falsch?
Der Fehler sitzt immer vor dem Computer...
  Mit Zitat antworten Zitat