Ver Mensaje Individual
  #3  
Antiguo 12-11-2008
dfarias dfarias is offline
Miembro
 
Registrado: abr 2007
Posts: 79
Reputación: 18
dfarias Va por buen camino
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.
Responder Con Cita