timeSetEvent i Access Violation

0

Mam następujący problem z jednej procedury wywołuje funcje timeSetEvent która to z czasem złoki odpala procedure timerproc. Kompiluje się bez problemu ale wywala się w czasie działania Access Violation to znaczy po po uruchomieniu procedury timerproc (a dokładnie przy jej kończeniu bez względu czy coś robi czy jest pusta). Może ktoś już to przerabiał??

procedure....
begin
.
.
uTimerRes:=5;
uTimerID:=timeSetEvent(500,uTimerRes,@timerproc,0,TIME_ONESHOT);
.
.
end;

procedure timerproc...
begin
.
.
.
end

0

To znowu ja teraz się zarejestrowałem. Odnośnie timeSetEvent nie wiem czy to nie jest problem z wskaźnikiem do procedury ale nie zabardzo wiem jak to ugryźć. Może ktoś ma jakieś sugestie?

0

Sam sobie poradziłem a powody były dwa:

  1. calling convention (np. register, pascal, cdecl, stdcall, and safecall)
  2. funcja callback musi mieć odpowiednią strukturę tzn:
    procedure TimeCallBack(TimerID, Msg:Uint; dwUser, dw1, dw2: DWord);stdcall; u mnie zabrakło paru argumentów

szkoda że w helpie nie wspominają nic o funkcji callback nie musiałbym tylke kopać, chociaż się udało to szkoda mi czasu.

0

szkoda że w helpie nie wspominają nic o funkcji callback nie musiałbym tylke kopać, chociaż się udało to szkoda mi czasu.

Właśnie, że wspominają. Co prawda, nie ma linku z TimeSetEvent, ale wystarczy wpisać TimeProc, aby to znaleźć.

1 użytkowników online, w tym zalogowanych: 0, gości: 1