Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Llamado a una función de una dll (https://www.clubdelphi.com/foros/showthread.php?t=28259)

Ricardo León 14-12-2005 16:54:27

Llamado a una función de una dll
 
Hola a todos


Alguien me puede ayudar?

Necesito utlizar una función específica de una dll pero no se como invocarla ni como invocar la dll.

roman 14-12-2005 17:13:26

Código Delphi [-]
function UnaFuncion(S: String): String; external 'unadll.dll';

Tu ajustas el nombre correcto de la función, los parámetros, el tipo de valor que devuelve y el nombre de la dll a tus necesaidades.

// Saludos

jachguate 14-12-2005 17:57:11

Es importante tener en cuenta también el modelo de llamada a usar, pues determina la forma en que se pasan y liberan los parámetros de la función, muy importante si la dll no está escrita en delphi.

El mas extendido de los modelos de llamadas es StdCall, pues es el que se usa para comunicarse con el API de windows.

Código Delphi [-]
  function UnaFuncion(S: String): String; external 'unadll.dll'; stdcall;
No logro recordar en este momento si stdcall debe ponerse antes o después de la clausula external, o si puede ponerse en cualquier parte. Eso ya lo dejo a vos.

Hasta luego.

;)

Ricardo León 14-12-2005 19:52:17

Error al invocar dll
 
Muchas gracias por responder.

Ya he utilizado esta estructura pero al compilar me sale el siguiente error:

Field definition not allowed after methods or properties

roman 14-12-2005 20:07:36

No puedes declarar funciones externas dentro de la declaración de una clase. Deben ser funciones sueltas.

// Saludos

Ricardo León 14-12-2005 20:37:58

Disculpen mi ignorancia pero en que lugar debo dejar la declaración

function cargar_dll(cadena: string): string; stdcall; external 'pagos.dll';

roman 14-12-2005 20:44:06

Por ejemplo


Código Delphi [-]
type
  TForm1 = class(TForm)
    // INCORRECTO
    function cargar_dll(cadena: string): string; stdcall; external 'pagos.dll';
  end;


Código Delphi [-]
type
  TForm1 = class(TForm)
  end;

// CORRECTO
function cargar_dll(cadena: string): string; stdcall; external 'pagos.dll';

Es decir, en cualquier lugar donde declararías una función cualquiera que no sea método de una clase.

// Saludos

Ricardo León 16-12-2005 16:45:04

Hola a todos...

Que pena por molestar tanto.

Ya coloque la declaración del llamado de la dll en el lugar correcto, ahora el problema es que cuando ejecuto el programa se presenta el error

No encuentra el punto de entrada del procedimietno cargar_dll en la biblioteca de vínculos dinámicos pagosrm.dll.

Esa libreria fué instalada para correr una aplicación en VBasic y el programa de prueba funciona, yo necesito utilizar esta función para recibir la respuesta correspondiente.

roman 16-12-2005 16:53:08

¿La función cargar_dll realmente existe en pagosrm.dll? Es decir, el error te dice simple y llanamente que en esa biblioteca no hay ninguna función con ese nombre. Muy posiblemente tenga otro nombre.

// Saludos


La franja horaria es GMT +2. Ahora son las 07:46:49.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi