Envío código que me solicitaste
Unit pru1;
interface
Uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,PRINTERS;
TYPE
TPROCESO= FUNCTION(HANDLE:THANDLE;password,tit,INI:string;numcla:INTEGER):INTEGER;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
actual:string;
FPRINTER:TPRINTER;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
VAR
INSTANCIADLL:THANDLE;
CAPTURAR:TPROCESO;
PRES:BOOLEAN;
D:INTEGER;
begin
FORM1.HIDE;
PRES:=TRUE;
InstanciaDLL := LoadLibrary('formato.dll');
IF INSTANCIADLL=0 THEN
BEGIN
SHOWMESSAGE('NO SE HA ENCONTRADO FORMATO.DLL');PRES:=FALSE;
FORM1.SHOW;
END;
IF PRES=TRUE THEN
BEGIN
try
{ obtener la direccion del procedimiento/función }
@CAPTURAR := GetProcAddress(InstanciaDLL, 'documen');
D:=capturar(Application.Handle,'xxx','OOO',ACTUAL,20);
finally
{ liberar la DLL}
FreeLibrary(InstanciaDLL);
FORM1.SHOW;
end;
END;
end;
La dll formato.dll tiene su proceso principal llamado documen que crea una form, en esa form tiene un menu de acciones a realizar las cuales las selecciona el usuario, tiene aproximadamente 14 submenus, el que causa el error es cuando un proceso crea en runtime una tabla paradox y tiene un componente table y datasource, el proceso en sí trabaja perfectamente el problema es cuando se libera la dll y se ha utilizado ente proceso genera un error en iddbas32.dll como página no valida utilizo delphi 2 desktop espero me puedas ayudar gracias
interface
Uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,PRINTERS;
TYPE
TPROCESO= FUNCTION(HANDLE:THANDLE;password,tit,INI:string;numcla:INTEGER):INTEGER;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
actual:string;
FPRINTER:TPRINTER;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
VAR
INSTANCIADLL:THANDLE;
CAPTURAR:TPROCESO;
PRES:BOOLEAN;
D:INTEGER;
begin
FORM1.HIDE;
PRES:=TRUE;
InstanciaDLL := LoadLibrary('formato.dll');
IF INSTANCIADLL=0 THEN
BEGIN
SHOWMESSAGE('NO SE HA ENCONTRADO FORMATO.DLL');PRES:=FALSE;
FORM1.SHOW;
END;
IF PRES=TRUE THEN
BEGIN
try
{ obtener la direccion del procedimiento/función }
@CAPTURAR := GetProcAddress(InstanciaDLL, 'documen');
D:=capturar(Application.Handle,'xxx','OOO',ACTUAL,20);
finally
{ liberar la DLL}
FreeLibrary(InstanciaDLL);
FORM1.SHOW;
end;
END;
end;
La dll formato.dll tiene su proceso principal llamado documen que crea una form, en esa form tiene un menu de acciones a realizar las cuales las selecciona el usuario, tiene aproximadamente 14 submenus, el que causa el error es cuando un proceso crea en runtime una tabla paradox y tiene un componente table y datasource, el proceso en sí trabaja perfectamente el problema es cuando se libera la dll y se ha utilizado ente proceso genera un error en iddbas32.dll como página no valida utilizo delphi 2 desktop espero me puedas ayudar gracias
1 Respuesta
Respuesta de gaunmanuel
1