Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-12-2003
Avatar de Trigger
Trigger Trigger is offline
Miembro
 
Registrado: nov 2003
Ubicación: Barranquilla (Colombia)
Posts: 79
Poder: 21
Trigger Va por buen camino
Wink Crear Dll

Saludos a todos los del foro, me estoy iniciando en delphi (ya tengo bastante recorrido en c++ builder y algo de pascal), y me ha parecido excelente menos mal estos señores de la borland hacen todo homologo.

Bueno, mi pregunta es sobre las dll, listo fui al tutorial de las dll en delphi (dll wizard) y cvreo mis funciones y la compilo y todo excelente.

Ahora como hago para incluirla (mejor dicho, linkearla) en mi projecto.

me tocara registrar la dll o solo con colocarla donde esta el .exe

Gracias
__________________
Trigger
Responder Con Cita
  #2  
Antiguo 09-12-2003
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
Es igual que con cualquier otra dll. Sólo tienes que coocarla en algún lugar accesible. Puede ser la carpeta de tu ejecutable o alguna carpeta en el "path" de Windows.

// Saludos
Responder Con Cita
  #3  
Antiguo 09-12-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Si se trata de una DLL "plana" y lo que quieres es usar funciones o procedimientos de estas, puedes hacerlo mediante la función LoadLibrary, o definirla estáticamente:
Código:
procedure NombreEnElExe; stdcall; external 'ArchivoDll.dll' name 'NombreEnLaDLL';
Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #4  
Antiguo 09-12-2003
Avatar de Trigger
Trigger Trigger is offline
Miembro
 
Registrado: nov 2003
Ubicación: Barranquilla (Colombia)
Posts: 79
Poder: 21
Trigger Va por buen camino
Gracias roman, lo tomare en cuenta, delphi.com.ar, si se trata de una dll plana, pero no entiendo alli estas declarando una subriutina llamada NombreEnElExe o es el nombre del .exe y solo estoy llamando una sola funcion de la dll y ademas sonde tengo que colocar el codigo

Perdona la insistencia la verdad no entiendo tendrias que ser mas especifico, gracias
__________________
Trigger
Responder Con Cita
  #5  
Antiguo 09-12-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
NombreEnElExe es el nombre con que voy a llamar a la función de la DLL en el proyecto. Normalmente, si no hay problemas de nombres iguales y si las funciones en la DLL tienen nombre, se suele utilizar este mismo nombre.
NombreEnLaDLL es el nombre con que está definida la exportación en la DLL, tené en cuenta que también se puede acceder a una función mediante el número de orden
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #6  
Antiguo 12-12-2003
Avatar de Trigger
Trigger Trigger is offline
Miembro
 
Registrado: nov 2003
Ubicación: Barranquilla (Colombia)
Posts: 79
Poder: 21
Trigger Va por buen camino
Saludos, les comento que probe lo que me dijeron y me sale un error, al cimpilar todo bien, pero al ejecutar sale un error de direccion de memoria tipico de Windows

La declaracion que hice fue:
Cita:
function Suma(Num1: Integer;Num 2: Integer): Integer; stdcall; external 'funciones.dll' name 'Suma';
sera que en el name tendre que ponerle parametros o algo

Gracias de antemano
__________________
Trigger
Responder Con Cita
  #7  
Antiguo 12-12-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
¿Y cómo la delcaraste en la DLL?... ¿Son los mismos tipos de datos?¿Exportaste la función?¿Cuál es el error?
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #8  
Antiguo 15-12-2003
Avatar de Trigger
Trigger Trigger is offline
Miembro
 
Registrado: nov 2003
Ubicación: Barranquilla (Colombia)
Posts: 79
Poder: 21
Trigger Va por buen camino
Saludos...
Los pasos realizados on los siguientes
Creo la dll en el dll Wizard, declro una funcion llamada suma que tiene dos parametros enteros y devuelve unh entero, la compilo y todo esta muy bien, luego la copio en el directorio de mi proyecto y en mi proyecto coloco la siguiente declaracion
Cita:
function Suma(Num1: Integer;Num2: Integer): Integer; stdcall; external 'funciones.dll' name 'Suma';
, lo copilo y todo perfecto, pero a la hora de correr el proyecto me sale un error como
Cita:
Error memory Adresss 0x00003C, algo por el estilo
, la verdad segui los pasos pero no se cual es la de exportar la funcion (en la dll solo creo la funcion y la copilo y listo)

Gracias
__________________
Trigger
Responder Con Cita
  #9  
Antiguo 15-12-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
En una DLL, o mismo en un EXE, puedes definir cuáles funciones son aquellas que exportarás para poder utilizar desde un módulo externo, esto no es algo propio de Delphi.
Te recomiendo leer en la ayuda el tema exporting functions and procedures

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
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 15:15:43.


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