Fita
13-08-2018, 20:54:06
Hola a todos.
Tengo un error de Access Violation que no puedo resolver. El error solo ocurre cuando se carga la dll.
Estoy haciendo algo mal?
Desde ya muchas gracias
Codigo de muestra:
procedure cierraliquidacion(sender: tobject);
var cCodbar: string;
hMod: Thandle;
GenRapipago: function(nCodempresa: integer; nLegajo: integer; nNroFactura: integer; nVto1: currency; nVto2: currency; cFecJul_1: string; cFecJul_2: string): string; stdcall;
begin
if Liq000Agente.value <> 0 then // si el agente es > a 0 genera el codigo de barras y cargo la dll
begin
hMod := loadlibrary('fitasoft2.dll');
end;
if (Liq000Agente.Value = 1) or (Liq000Agente.Value = 3) then
begin
GenRapiPago := GetProcaddress(hMod, 'GenRapiPago'); // genera codigo de barras, llamo la funcion
end;
Tabla.Open;
// aca hago un do while generando el codigo de barras para cada registro
while not Res041.of do
begin
cCodbar := '';
if (Liq000Agente.value = 1) then
begin
cCodbar := GenRapiPago(IBLiq000NroEmpAgente.Value, Res041Codfam.Value, nroCompte, Res041Totrecibo.AsCurrency,
Res041Totrecibo2.AsCurrency, strFecJul_1, strFecJul_2);
end;
Tabla.Edit;
TablaCodbarra.value := cCodbar;
Tabla.post;
Res041.next;
end;
Tabla.close;
Res041.Close;
if Liq000Agente.Value > 0 then
begin
freeLibrary( hMod );
end;
Liq000.close;
showmessage('Proceso terminado');
// luego de dar ok al mensaje da el error Acces Violation, solo los que usan el codbar
end; // el debug me marca esta linea
Tengo un error de Access Violation que no puedo resolver. El error solo ocurre cuando se carga la dll.
Estoy haciendo algo mal?
Desde ya muchas gracias
Codigo de muestra:
procedure cierraliquidacion(sender: tobject);
var cCodbar: string;
hMod: Thandle;
GenRapipago: function(nCodempresa: integer; nLegajo: integer; nNroFactura: integer; nVto1: currency; nVto2: currency; cFecJul_1: string; cFecJul_2: string): string; stdcall;
begin
if Liq000Agente.value <> 0 then // si el agente es > a 0 genera el codigo de barras y cargo la dll
begin
hMod := loadlibrary('fitasoft2.dll');
end;
if (Liq000Agente.Value = 1) or (Liq000Agente.Value = 3) then
begin
GenRapiPago := GetProcaddress(hMod, 'GenRapiPago'); // genera codigo de barras, llamo la funcion
end;
Tabla.Open;
// aca hago un do while generando el codigo de barras para cada registro
while not Res041.of do
begin
cCodbar := '';
if (Liq000Agente.value = 1) then
begin
cCodbar := GenRapiPago(IBLiq000NroEmpAgente.Value, Res041Codfam.Value, nroCompte, Res041Totrecibo.AsCurrency,
Res041Totrecibo2.AsCurrency, strFecJul_1, strFecJul_2);
end;
Tabla.Edit;
TablaCodbarra.value := cCodbar;
Tabla.post;
Res041.next;
end;
Tabla.close;
Res041.Close;
if Liq000Agente.Value > 0 then
begin
freeLibrary( hMod );
end;
Liq000.close;
showmessage('Proceso terminado');
// luego de dar ok al mensaje da el error Acces Violation, solo los que usan el codbar
end; // el debug me marca esta linea