PDA

View Full Version : مشکلی با DLL



Mahyaa
دوشنبه 21 فروردین 1385, 16:19 عصر
با سلام .
من یک DLL نوشته ام که شامل چند Function و Procedure عمومی است .
هنگام صدا کردن اینها در برنامه , بدون مشکلی اجرا میشوند ولی هنگام بستن برنامه یک Error میگیرم "Invalid Pointer Operation" !
هنگامی که بعضی از Function ها را استفاده می کنم این پیغام در هنگام بسته شدن برنامه ظاهر میشود . مشکل از کجاست ؟



//My DLL :
function DLLFunc(var S1 : String) : String; stdcall;
begin
.
.
.
Result : MyLocalFun;
end;

function MyLocalFun;
var
RetStr : String;
begin
try
AnObject := TAnObject.Create(Application);
.
.
.
finally
AnObject.Free;
end;

Result := RetStr;
end;


//My Exports :exports DLLFunc ;


//In the Application

type
TMyDLLFuncCall = function(var S1 : String) : String; stdcall;
var
Hndl : THandle;

procedure TForm1.Form1Create(Sender : TObject);
begin
Hndl := LoadLibrary('MyLib.DLL');
if Hndl = 0 then
Application.Terminate;
end;

procedure TForm1.Form1Destroy(Sender : TObject);
begin
if Hndl <> 0 then
FreeLibrary(Hndl);
end;

function CallDLLFunction (var S2 : String):String;
var
DllFuncCall : TMyDLLFuncCall;
begin
if Hndl <> 0 then
begin
DllFuncCall := GetProcAddress(Hndl , 'DLLFunc');
if @DllFuncCall <> nil then
begin
Result := DllFuncCall(S2);
//Use S2 for some means .
end;
end;
end;

مهدی کرامتی
دوشنبه 21 فروردین 1385, 21:51 عصر
لطفا نمونه سورس قابل کامپایل در دلفی تان را Zip کرده و ضمیمه کنید (هنگام پست کردن میتوانید به پست تان ضمیمه اضافه کنید) تا بررسی شود.

کرامتی.