Entwickler-Ecke
Sonstiges (Delphi) - Console: Timer
lemming - Mo 04.08.03 15:34
Titel: Console: Timer
Wie kann ich in einer Consolenanwendung einen Timer installieren ohne dabei ein Datenmodul implementieren zu müssen?
-lemming
lemming - Mo 04.08.03 16:00
Ich hab jetzt schonmal was gefunden. Der Timer wird auch ohne Murren erstellt. Nur die Procedure die den Timer steuert wird einfach ignoriert. Sie wird partout nicht aufgerufen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure DoTimer(Sender: TObject); begin ShowMessage('Timer'); end;
begin TimerSend := TTimer.Create(nil); TimerSend.Interval := 100; @TimerSend.OnTimer := @DoTimer; TimerSend.Enabled := True; . . . |
Wenn ich die Prozedur DoTimer ohne Pointer aufrufe kommt die Meldung:
Zitat: |
Inkompatible Typen: 'Methodenzeiger und reguläre Prozedur' |
Ist der Aufruf via Pointer schlecht oder fehlt noch was um den Timer anzuschucken?
Tino - Di 05.08.03 11:21
lemming hat folgendes geschrieben: |
Ist der Aufruf via Pointer schlecht oder fehlt noch was um den Timer anzuschucken? |
Dann mach es doch so:
Delphi-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: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52:
| Type TTimerHandler = Class Private fTimer: TTimer; Procedure DoTimer (aSender: TObject); Function GetEnabled: Boolean; Procedure SetEnabled (aValue: Boolean); Public Constructor Create; Destructor Destroy; override; Property Enabled: Boolean read GetEnabled write SetEnabled; End;
Constructor TTimerHandler.Create; Begin fTimer := TTimer.Create (nil); fTimer.Interval := 100; End;
Destructor TTimerHandler.Destroy; Begin fTimer.Free; Inherited; End;
Function TTimerHandler.GetEnabled: Boolean; Begin Result := fTimer.Enabled; End;
Procedure TTimerHandler.SetEnabled (aValue: Boolean); Begin fTimer.Enabled := aValue; End;
Procedure TTimerHandler.DoTimer (aSender: TObject); Begin ShowMessage('Timer'); End;
Var TimerHandler: TTimerHandler; Begin TimerHandler: TTimerHandler.Create; TimerHandler.Enabled := True;
TimerHandler.Free; End; |
lemming - Di 05.08.03 12:49
Das klappt leider irgendwie nicht. DoTimer wird nie ausgeführt!
Woran kann das liegen?
Tino - Di 05.08.03 13:38
lemming hat folgendes geschrieben: |
Woran kann das liegen? |
Da hättest du eigentlich auch selbst drauf kommen können.
Ich hab die Zuweisung vergessen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| Constructor TTimerHandler.Create; Begin fTimer := TTimer.Create (nil); fTimer.Interval := 100; fTimer.OnTimer := DoTimer; End; |
Gruß
Tino
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!