Witam!
Tworzę aplikację-serwer jako aplikację konsolową. Potrzebny mi jest w programie Timer, jednak, gdy Timer ma przypisaną procedurę na "OnTimer" i próbuję go włączyć to wyskakuje błąd "Access violation" w odniesieniu do Sender'a.
Próbowałem zmieniać mu właścicieli, ale otrzymuję ten sam błąd.
Jak mogę sobie z tym poradzić? Dodam, że w ten sam sposób dodałem Timera do aplikacji okienkowej i nie ma problemów.
0
0
Wszystkie wróżki wyjechały z Polski... bez kodu nikt nie zgadnie.
0
ja sprobuje :)
albo tak
http://4programmers.net/Forum/381450#id381450
albo
program Project1;
uses
Windows, extctrls, forms;
{$R *.res}
{$APPTYPE CONSOLE}
type
TTimerClass = class
public
procedure TEv(Sender: TObject);
end;
procedure TTimerClass.TEv(Sender: TObject);
begin
WriteLn('heloooooo');
end;
var
T:TTimer;
TC:TTimerClass;
i:integer;
begin
T := TTimer.Create(nil);
T.Interval := 200;
T.Enabled := true;
TC := TTimerClass.Create();
T.OnTimer := TC.TEv;
//trzeba dac sznse dzialac timerowi albo inny watek
for i := 0 to 1000000000 do Application.ProcessMessages();
T.Enabled := false;
T.Free;
TC.Free;
end.
0
albo uzyj SetTimer():
http://msdn.microsoft.com/en-us/library/ms644906.aspx
0
W Delphi zadziałało, w Lazarusie już nie :(
A muszę w Lazarusie, bo program ma być pod Linuxa.
Jakieś inne koncepcje?
0
\lazarus\fpc\2.2.2\source\packages\fcl-base\examples\testtimer.pp
i robi co chesz ....
0
Ok póki co śmiga, dzięki za pomoc ;)