Aqui va el codigo de como llamo a mi dll
Cita:
procedure TForm1.FormCreate(Sender: TObject);
var h:THandle;
setAdo:function (cCia: pchar;hwd:Integer):integer;stdcall;
Cia: pchar; begin h:=LoadLibrary('prueba.dll');
if h = 0 then
beginshowmessage('no se encontro prueba.dll');
exit; end;
@setAdo:=GetProcAddress(h,'SetAdo');
if @setAdo=nil then
beginshowmessage('no se encontro SetAdo');
exit; end;
getmem(Cia,3);
strlcopy(Cia,pchar('COI'),3);
setAdo(Cia,self.Handle);
FreeLibrary(h);
Application.Terminate; end;
|
y este es el codigo de la dll
Cita:
library prueba;
uses
SysUtils,
Classes,
Forms,
Dialogs,
ShellApi,
Unit1 in 'Unit1.pas' {Form1};
{$R *.RES}
function SetAdo(Cia: pchar;hwd:Integer):integer;stdcall;
begin Application.handle:=hwd;
tryForm1:=TForm1.Create(Application);
Form1.cCia:=Cia;
Showmessage(Form1.ADOStoredProc1.ConnectionString); except
on E: Exception do
begin ShowMessage('Error Creant Formulari. ' + E.Message);
result:=0;
raise;
exit; end;
end;
result:=1; end;
exports SetAdo;
begin
end.
|