Hola a todos, un saludo afectuoso.
Tengo una situación que me tiene bastante confundido. Al llamar una función de una DLL desde Delphi la misma me retorna resultados diferentes dependiendo de como paso los parámetros. Les comento, si paso los parámetros escritos (ej. una fecha haciendo el cast a tipo PAnsiChar('20072017'), como lo pide la librería) funciona perfectamente. Sin embargo si utilizo variables del mismo tipo de datos no me funciona.
Este es el procedimiento que ejecuto:
Código Delphi
[-]
function TfrmMain.LibroDiario(Desde, Hasta: TDateTime; nArchivoSalida, fExtension: string): Boolean;
var Lib : THandle;
LeerLibroDiario: function(ZNro_Fecha:PAnsiChar;NombreArchivoSalida:PAnsiChar;Extension:PAnsiChar):Boolean; stdcall;
verificarConexion: function(puertoConexion:string):Boolean; stdcall;
Leido:Boolean;
Fecha: TDatetime;
sFecha, sArchivo: string;
begin
Result:=False;
begin
Lib:=LoadLibrary('TaurusInterface.dll');
verificarConexion := GetProcAddress(Lib,'verificarConexion');
if Assigned(verificarConexion) then
begin
if verificarConexion('3') then
begin
LeerLibroDiario := GetProcAddress(Lib, 'LeerLibroDiario');
if Assigned(LeerLibroDiario) then
begin
try
try
Fecha := Desde;
while Fecha <= Hasta do
begin
sFecha := FormatDateTime('ddmmyyyy', Fecha);
sArchivo := Concat('c:\lventas\LV', FormatDateTime('yymmdd', Fecha),'.001');
showmessage(Concat(sFecha, ' - ', sArchivo));
Leido:=LeerLibroDiario(PAnsiChar(sFecha), PAnsiChar(sArchivo), PAnsiChar('001')); <- Con estos parámetros NO Funciona
Fecha:=IncDay(Fecha,1);
Application.ProcessMessages;
end;
except on E: Exception do
raise Exception.Create('Error al extraer Libro de Venta Diario: ' + E.Message) ;
end;
finally
FreeLibrary(Lib);
Result := Leido;
end;
end;
end;
end;
end;
end;
Espero que puedan ayudarme.
Muy agradecido de antemano.
Fabio