AW: Timer in einer Unit
@Dejan Vu
Vielleicht hast du auch Recht, denn irgendwann wird es dann doch peinlich wenn man merkt, dass jemand denkt, dass man das hier
Delphi-Quellcode:
nur deshalb so geschrieben hat, weil man es nicht besser drauf hat, und nicht, weil dahinter eine Absicht steckt und man an die denkt, die evtl. in den nächsten Jahren danach suchen und eher den Sinn verstehen wollen.
procedure MyTimerCreate;
begin MyTimer := TMyTimer.Create(nil); with MyTimer do begin Interval := 1000; Enabled := True; OnTimer := TimerTick; end; end; initialization MyTimerCreate; Und für die, die noch immer nicht verstanden haben wieso der Code so zerlegt ist und es eine procedure TimerTick gibt, den Grund erkennen die, die das Problem man haben werden. Denn es ist nicht ohne Grund so. Denn gelegentlich braucht man die Prozedur nicht. Also ist sie separat. Ich werde das jetzt aber nicht vertiefen. |
AW: Timer in einer Unit
Hi.hi..
:wink: Nur ne kleine Anmerkung: SetTimer( 0, nIDEvent, Interval, @OnTimer ); benötigt eine nIDEvent > 0 !! Also hier einfach SetTimer( 0, 1, Interval, @OnTimer ); Da mit dieser Minimalroutine eh nur ein Teimer erzeugt werden kann :) Zitat:
|
AW: Timer in einer Unit
Zitat:
Evtl. liegt es auch daran, dass ich es mir angewöhnt habe den gesamten Abschnitt der Dokumentation zu lesen und nicht nur das erste Schlagwort. |
AW: Timer in einer Unit
Schau doch mal in den Post Nr. 5 von diesem Thema, da habe ich versucht es zu erklären...:wink:
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx Zitat:
OK, da weiß wohl MS selber nicht was es will. A nonzero timer identifier. ..nIDEvent should be 0 if the hWnd is NULL Zitat:
|
AW: Timer in einer Unit
Zitat:
Sprich es heißt nicht, dass der Parameter nicht 0 sein darf, sondern der Identifizierer für einen Timer. In dem Fall muss man das einfach nur wörtlich nehmen... |
AW: Timer in einer Unit
:thumb: aber der Event wird nur 1x ausgelöst, d.h. es handelt sich nicht um einen periodischen Timer (den man aber sehr leicht anhand des Codes erstellen kann)
|
AW: Timer in einer Unit
Zitat:
|
AW: Timer in einer Unit
Zitat:
So ist es halt nur wieder das übliche BlaBla. |
AW: Timer in einer Unit
Ich hatte die MSDN-Beschreibung so verstanden, aber -so im nachhinein- wäre das auch ziemlich blöd, wenn es nur 1x gefeuert würde.
Zitat:
|
AW: Timer in einer Unit
Ich hab das mal übersetzt:
SetTimer
Code:
Die Funktion SetTimer erzeugt ein System-Timer-Ereignis. Ein Time-Out-Wert wird festgelegt. Immer wenn ein Time-Out eintritt, sendet das System eine WM_TIMER-Meldung an die installierte Anwendungswarteschlange, oder übergibt die Meldung an eine anwendungsdefinierte TimerProc-Callback-Funktion.
function SetTimer(Wnd: HWnd; IDEvent: Integer; Elapse: Word; TimerFunc: TFarProc): Word;
Rückgabewert Der Rückgabewert legt den Integer-Bezeichner für das neue Timer-Ereignis fest, wenn der Parameter Wnd Null ist, und die Funktion erfolgreich ausgeführt wurde. Eine Anwendung übergibt diesen Wert an die Funktion KillTimer, um das Timer-Ereignis zu beseitigen. Der Rückgabewert ist ungleich Null, wenn der Parameter Wnd ein gültiges Fenster-Handle ist, und die Funktion erfolgreich ausgeführt wurde. Andernfalls ist der Rückgabewert Null. Hinweis Timer sind eine eingeschränkt verfügbare, globale Ressource. Aus diesem Grund ist es wichtig, daß eine Anwendung den durch die Funktion SetTimer zurückgegeben Wert überprüft, um sicherzustellen, daß ein Timer verfügbar ist. Um eine Timer-Funktion zu installieren, muß TimerFunc eine Adresse der Prozedurinstanz einer Callback-Funktion bestimmen und die Funktion muß in der Moduldefinitionsdatei der Anwendung exportiert werden. Die Adresse sollte mit Hilfe der Funktion MakeProcInstance erzeugt werden. Die Callback-Funktion muß die Pascal-Aufrufkonvention verwenden und als FAR deklariert werden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz