Estoy probando con el uso del DLL externas y no logro hacer que me devuelvan datos las funciones.
Por ejemplo este unit en la funcion VerVersion si que me devuelve el valor numerico pero no me asigna nada a la variable cadena, la cual se cargaria con los datos de la version i.e.(Rel.4.13) . Creo que el paso por puntero es correcto.
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
AbrirPuerto: TButton;
VerVersion: TButton;
procedure AbrirPuertoClick(Sender: TObject);
procedure VerVersionClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
cadena:string;
function OpenSerial(PortNumber:LongWord): LongWord;
function CloseSerial:longword;
end;
var
Form1: TForm1;
implementation
function Dll_OpenSerial(PortNumber:LongWord): integer; external 'I:\PRUEBA\DLL_ACCESS_POINT.dll';
function Dll_CloseSerial(PortNumber:longword): longword; external 'I:\PRUEBA\DLL_ACCESS_POINT.dll'
function Dll_GetDllVersion(var cadena): longword; external 'I:\PRUEBA\DLL_ACCESS_POINT.dll'
function Dll_ReqSysInfo(var sInfo:string):longWord; external 'I:\PRUEBA\DLL_ACCESS_POINT.dll'
{$R *.dfm}
procedure TForm1.AbrirPuertoClick(Sender: TObject);
begin
OpenSerial(0);
OpenSerial(1);
OpenSerial(2);
OpenSerial(3);
OpenSerial(4);
OpenSerial(5);
end;
procedure TForm1.VerVersionClick(Sender: TObject);
var
resultado:longWord;
begin
cadena:= '1234567890';
resultado:= Dll_GetDllVersion( cadena);
MensaPanta(resultado);
MensaPanta(cadena);
end;
function TForm1.OpenSerial(PortNumber: LongWord): LongWord;
begin
result:= Dll_OpenSerial(PortNumber);
if result = 1 then
MensaPanta('Abrio')
else
MensaPanta('Error');
end;
end.
Muchas gracias por vuestra ayuda.
|