Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-12-2005
Ricardo León Ricardo León is offline
Miembro
 
Registrado: ago 2005
Posts: 41
Poder: 0
Ricardo León Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 14-12-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #3  
Antiguo 14-12-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
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.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #4  
Antiguo 14-12-2005
Ricardo León Ricardo León is offline
Miembro
 
Registrado: ago 2005
Posts: 41
Poder: 0
Ricardo León Va por buen camino
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
Responder Con Cita
  #5  
Antiguo 14-12-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
No puedes declarar funciones externas dentro de la declaración de una clase. Deben ser funciones sueltas.

// Saludos
Responder Con Cita
  #6  
Antiguo 14-12-2005
Ricardo León Ricardo León is offline
Miembro
 
Registrado: ago 2005
Posts: 41
Poder: 0
Ricardo León Va por buen camino
Disculpen mi ignorancia pero en que lugar debo dejar la declaración

function cargar_dll(cadena: string): string; stdcall; external 'pagos.dll';
Responder Con Cita
  #7  
Antiguo 14-12-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #8  
Antiguo 16-12-2005
Ricardo León Ricardo León is offline
Miembro
 
Registrado: ago 2005
Posts: 41
Poder: 0
Ricardo León Va por buen camino
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.
Responder Con Cita
  #9  
Antiguo 16-12-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 23:56:41.


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
Copyright 1996-2007 Club Delphi