Cześć, mam następujący problem, którego się chyba nie da rozwiązać.
Mam dll(nie swoją) i wywołuję w niej funkcję. Jako jeden z parametrów przekazuję wskaźnik na funkcję, która ma zostać w pewnym momencie wykonana(u mnie).

Chciałem to sobie wszystko opakować w klasę w taki sposób(DllProc to jest ta część wywoływana przez DLL):

type
  TDLLProc = function(params...): integer; stdcall;
  TMyEvent = procedure(Sender: TObject; params....);
  TMyClass = class
  private
    FOnEvent: TMyEvent;
    FDLLProc: TDllProc;

    function DllProc(params...): integer; stdcall;    

  public
    property OnEvent: TMyEvent read FOnEvent write FOnEvent;

gdzieś tam w konstruktorze:

FDllProc:=DllProc;

I niby wszystko ładnie działa, ale w ciele funkcji DllProc okazuje się, że wartości parametrów są w nieco innym obszarze pamięci niż być powinny. Np. parametr o nazwie HANDLE ma adres: $12DF73C, ale tak naprawdę jego wartość jest w $12DF740.

Więc z metody DllProc zrobiłem funkcję nie będącą składnikiem klasy. I teraz wszystko działa, tylko że okazuje się, że mój zamysł, żeby zbudować sobie klasę szlag trafił, bo z poziomu funkcji chyba nie mogę wywołać zdarzenia w odpowiednim obiekcie. Chyba, że jest jakiś myk, o którym nie wiem(np. umieszczenie jakiejś globalnej referencji do obiektu, ale to trochę takie...). Ma ktoś jakiś ciekawy pomysł?

Jakby co to class function też nie daje rady.