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?