سلام بر دوستان عزيزم
به مشكلي برخوردم كه نمي دونم از كجاست. من يه DLL به متن زير نوشتم:
حالا اين DLL رو در برنامه خودم به صورت ديناميكي لود كردم. و خوب هم جواب ميده. يعني لود ميشه و هر SQL ي كه بهش ارسال ميشه رو توي Query برنامه اعمال مي كنه. مشكل اينكه كه وقتي از برنامه خارج ميشم اول يه ارور ويندوزي (همون پنجره اي كه Send و Don`t send داره) ميده و بعد هم ارورر Accses validation (دسترسي به حافظه) ميده. هر كاري كردم درست نشد.کد:library Rooting;
uses
Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,
Forms,Dialogs,ADODB;
{$R *.res}
Procedure SQLManager(Query:TADOQuery;SQL:Widestring);
begin
Query.Active:=false;
Query.SQL.Clear;
Query.SQL.Add(SQL);
Query.Active:=true;
end;
Exports SQLManager;
end.
توي فرمم يه كليد ساختم و توي اون اين دستورات رو نوشتم:
اشكال از كجاست؟کد:procedure TForm1.Button1Click(Sender: TObject);
type
TQuerying=Procedure (Query:TAdoQuery;SQL:Widestring);
var
QueryManager:TQuerying;
Hand:THandle;
begin
Hand:=Loadlibrary('h:\MyWork\CD-Bank\DLL-Source\Rooting.DLL');
if Hand<>0 then
begin
@QueryManager:=GetProcaddress(Hand,'SQLManager');
if @QueryManager<>nil then
QueryManager(ADOQuery1,'Select * From Datas');
end
else
begin Showmessage('The Path of Dll is rong ...'); Exit; end;
Freelibrary(Hand);
end;
بايد بگم به صورت External و غير ديناميكي هم لود كردم و باز هم همونجوري هستش.
ممنون ميشم كمكم كنيد.
باي