![]() |
Incorporar dll al proyecto
Quisiera saber como hago para incorporar o referenciar a un archivo .DLL dentro de mi proyecto. Es una biblioteca externa que no pertenece al delphi 7. Si quiero ejectar la aplicacion en otros ordenardes debo agregar al .dll o ya al compilar queda todo incluido. Muchas gracias.
|
Hay dos formas de llamar o usar rutinas que estan contenidas en una dll, y usar estas en tu proyecto delphi.
La Dll debe estar junto con tu ejecutable o en una ruta que pueda ser ubicada como por ejemplo x:\windows\system32 Saludos |
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. |
Cita:
Segundo si el tipo es PChar, te recomiendo hacer
Saludos y espero te sirva. Un abrazo Desde Concepcion-Chile |
Gracias cloayza por tu respuesta , pero sigo con el mismo problema.
La funcion me devuelve un 8 pero la cadena queda tal cual se la paso y deberia quedar "4.13 VFP". Es como si no tomara la referencia de la variable,sino su valor. Usando la misma .dll desde VB6:mad: . funciona perfecto, me devuelve lo que corresponde. No se por donde mirarlo ya, estoy danto palos de ciego. Este es la documentacion del la DLL Función Dll_GetDLLVersion (ByRef SerialStr As String) As Long . Esta función devuelve la versión de la Dll. Parámetros [out] SerialStr En esta posición se guarda la versión de la DLL. Valor que devuelve Devuelve el número de caracteres almacenados en SerialStr. |
La franja horaria es GMT +2. Ahora son las 10:26:48. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi