program Project2; // Endnu en gang starter programmet her :-D
{$APPTYPE CONSOLE} // Sætter applikationstypen til CONSOLE
uses
SysUtils, Classes, Windows, Messages, Dialogs; // Inkludere nogle units
var
Run: Boolean = True; // Fortæller om vi kører eller ej
type
TTimerThread = class(TThread) // TTimerThread typen
private // Private deklærationer
public // Offentlige deklærationer
procedure Execute; Override; // Execute proceduren. Starter hele tråden
end;
procedure TTimerThread.Execute; // Execute proceduren's implementering
var
Msg: TMsg; // Windows Message som vi modtager
begin
SetTimer(0, 0, 5000, nil); // Sætter en timer for os
while Run do begin // Mens vi kører
if PeekMessage(Msg,0,0,0, PM_REMOVE) then // Tjekker efter hvilken besked vi får lige nu
begin
if Msg.message = WM_QUIT then // Hvis det er en WM_QUIT lukker vi tråden
break; // Vi lukker den her
if Msg.message = WM_TIMER then // Hvis det er en WM_TIMER betyder det at vores timer har kørt
Run := False; // Så vi sætter Run til False
TranslateMessage(Msg); // Oversæt beskeden
DispatchMessage(Msg); // Uddel beskeden
end;
end;
end;
var
TimerThread: TTimerThread; // Erlære en TTimerThread
SomeInt: Int64 = -1; // Bar en Int64 værdi
begin
TimerThread := TTimerThread.Create(False); // Opretter TTimerThread'en
while Run do begin // Mens run er true
Inc(SomeInt); // Øg SomeInt med en
WriteLn(IntToStr(SomeInt)); // Udskriv SomeInt
end;
TimerThread.Destroy; // Vi er færdige, så nedlæg TTimerThread'en
WriteLn('Counted from 0 to ' + IntToStr(SomeInt) + ' in 5 seconds!'); // Udskriv hvor meget vi talte til
ReadLn; // Vent på Enter tryk
end. // Luk programmet
Endnu engang et simpelt eksempel, men det virker. Eksemplet tæller fra 0 i 5 sekunder og skriver så hvor meget der blev talt til.
MH.
The-Freak
Livet er for kort til at kede sig.