Tajemniczy błąd (ach te Pointery)

0

Witam. Mam problem, z którym nie mogę sobie poradzić. A mianowicie aplikacja mdi wywołuje z dynamicznego dll-a formatkę. Kod wywołania formatki z dll-a w aplikacji głównej:

procedure TMainForm.FSFakturaSprzeday1Click(Sender: TObject);
var
dll1     : Thandle;
show_faks : procedure;
begin
try
dll1:=loadlibrary('..\DLL\faks.dll');
@show_faks:=GetProcAddress(dll1,'show_faks');
if @show_faks=nil then raise Exception.Create('Err-001');
show_faks;
finally
@show_faks:=nil;
end;
end; 

Kod w wywoływanym dll-u:

procedure show_faks;
var
faksf     : Tfaks_f;
begin

faksf := Tfaks_f.Create(application);
faksf.Show;
end;



exports

show_faks name 'show_faks';

begin

end.

i kod formatki w tym dll-u:

procedure Tfaks_f.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
end;

end.

Środowisko Win XP i delphi 6.0 Enterprise. Problem w tym, że w trakcie działania aplikacji wszystko jest ok ale jak ją zamykam to wywala mi błąd :

...raised exception class EInvalidPointer with message "Invalid pointer operation".

Czy ktoś może mi rozjaśnić gdzie tkwi błąd ?

0

w procedurze Show_faks dodaj parametr
AHandle: THandle; oraz linie

Application.Handle := AHandle;

i w wywolaniu procedury Show_faks podawaj uchwyt do application.

W dll dodaj jeszcze w zdarzeniu destroy:

Application.Handle := 0;

Jak cos to pisz na GG postaram sie pomoc.

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