Hallo zusammen,
ich habe jetzt schon alles gelesen und auch in der Suche mich bemüht etwas zu finden aber irgendwie finde ich nicht das passende womit ich persönlich weiterkomme.
Also ich habe folgendes problem.
Ich habe eine Konsolenanwendung welche immer laufen muss.
Also bilde ich eine Endlosschleife.
In dieser Endlosschleife würde ich gerne auf den OnTimer reagieren. Dies klappt aber leider nicht!
Dieser wird immer ignoriert!
Das auslagern in einem Thread habe ich auch probiert klappt aber bei mir leider auch nicht?!!
Warum keine Ahung........
Hier mal einen Auszug meines Sources.
Erster Versuch.....
Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils,QExtCtrls;
var
aTimer : TTimer;
procedure aOnTimer(Sender:TObject);
begin
writeln('Test');
end;
begin
aTimer := TTimer.Create(nil);
aTimer.Interval := 1*10*1000;
aTimer.OnTimer := aOnTimer;
aTimer.Enabled := True;
sleep(0);
while true do begin
sleep(0);
end;
end.
Der zweite Versuch mit Luckie Code............
Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils,
ExtCtrls,
Classes;
type
PMethodPointer = ^TMethodPointer;
TMethodPointer = packed record
pMethod: Pointer;
pObject: TObject;
end;
var
T : TTimer;
p : TMethodPointer;
i : Integer;
procedure NotifyEvent(Self: TMethodPointer; Sender: TObject);
begin
writeln('yes');
beep;
end;
begin
T := TTimer.Create(nil);
T.Interval := 200; // -> löst alle 200 ms das OnTimer-Event aus
try
p.pMethod := @NotifyEvent;
p.pObject := nil;
T.OnTimer := TNotifyEvent(p);
T.Enabled := true; // aktiviert den Timer
writeln('Warte auf Event: ');
for i := 1 to 5 do
begin
sleep(500);
writeln('warte ' + inttostr(i * 500) + 'ms...');
NotifyEvent(p, T);
end;
while true do begin
sleep(0);
end;
T.Enabled := false; // deaktiviert den Timer
finally
T.Free;
end;
end.
Danke im voraus für Vorschläge!!