Ver Mensaje Individual
  #8  
Antiguo 24-11-2018
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Reputación: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
El problema está en el tamaño de la cadena. Prueba de esta forma:


Código Delphi [-]
type
  TConsultarVersionDll = function ( descripcion : PAnsiChar; descripcion_largo_maximo: LongInt; var mayor : LongInt; var menor : LongInt) : LongInt; StdCall;


var
  dll  : THandle;
  error : LongInt;
  str : Array[0..200] of AnsiChar;
  mayor : LongInt;
  menor : LongInt;
  ConsultarVersionDll: TConsultarVersionDll;
begin
  dll := 0;

  // instanciar dll - recordar que se require "uses Windows"
  // for production -- dll := LoadLibrary('EpsonFiscalInterface.dll');
  dll := LoadLibrary('EpsonFiscalInterface.dll');

  // check error
  if dll = 0 then
  begin
    ShowMessage('Error al instanciar DLL');
    Exit;
  end;

  // obtener las referencias a funciones:  "ConsultarVersionDll"
  @ConsultarVersionDll := GetProcAddress(dll, 'ConsultarVersionDll');
  if not Assigned(ConsultarVersionDll) then
  begin
    ShowMessage('Error al asignar funcion: ConsultarVersionDll');
    Exit;
  end;
  
  // execute ConsultarVersionDll
  mayor:= 0;
  menor:= 0;
  error := ConsultarVersionDll(@str[0], 200, mayor, menor );

  ShowMessage( str );
  ShowMessage( IntToStr(mayor) );
  ShowMessage( IntToStr(menor) );
  ShowMessage( IntToStr(error) );

  // desalocar dll
  FreeLibrary(dll);
end;

También puedes hacerlo de forma estática de esta forma:
Código Delphi [-]
function ConsultarVersionDll(descripcion: PAnsiChar; descripcion_largo_maximo: LongInt; var mayor : LongInt; var menor : LongInt): LongInt; stdcall; external 'EpsonFiscalInterface.dll';

var
  error : LongInt;
  str : Array[0..200] of AnsiChar;
  mayor : LongInt;
  menor : LongInt;
begin
  ConsultarVersionDll(str, 200, mayor, menor);
  ShowMessage(Str +#13 + 'Mayor: '+ IntToStr(mayor) + #13 + 'Menor: ' + IntToStr(menor));
end;



Saludos.

Última edición por escafandra fecha: 24-11-2018 a las 01:22:26.
Responder Con Cita