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 28-02-2007
senda senda is offline
Miembro
 
Registrado: sep 2006
Posts: 48
Poder: 0
senda Va por buen camino
Integración C en Delphi

Hola alguien tiene idea de si esto se puede hacer y como?? Es decir, ¿desde una aplicación Delphi se pueden utilizar funcionalidades implementadas en C? Muchas gracias.
Responder Con Cita
  #2  
Antiguo 28-02-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.278
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Podrías utilizar DLL's ¿Te serviría eso?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 01-03-2007
senda senda is offline
Miembro
 
Registrado: sep 2006
Posts: 48
Poder: 0
senda Va por buen camino
Pues tendría que investigarlo. Te refieres a meter las funcionalidades implementadas en C en una libreria DLL y cargar dicha librería desde mi aplicación Delphi???
Suena interesante, pero tendré que documentarme bastante a cerca de la creación de DLL's y de la posterior integración de una DLL en una aplicación Delphi. Alguna sugerencia???
Responder Con Cita
  #4  
Antiguo 01-03-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.278
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
No lo he hecho nunca (que conste), pero en teoría no debe tener problemas.
Aquí hay expertos en C, a ver si nos dan su opinión.
¡O mejor! a ver si alguno nos crea una DLL con una funcioncilla sencilla (sumar(a,b:Integer), por ejemplo) e intentamos llamarla desde Delphi.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 01-03-2007
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 20
basti Va por buen camino
Un ejemplo suma:

La función en la dll escrita en C:

Código:
extern "C" __declspec(dllexport)
int WINAPI Suma (int a, int b)
{
	return a + b;
}
El extern "C", es para que se exporte la función con el mismo nombre (en este caso Suma).

Ahora el código Delphi:

Código Delphi [-]

function Suma(a, b : integer) : integer; stdcall; external 'dlldondeestasuma.dll'  name 'Suma'; 
// name es opcional, sólo haría falta si el nombre en delphi y en C fuesen distintos. 
// stdcall indica que la llamada no se hace en el formato Delphi, sino en el formato C (el usado por la mayoría de los lenguajes)



// llamada a la función
var
  n : integer;

begin
  n := Suma(3, 2);
end.

Esto vale para variables enteras, float o similares. Pero no para cadenas, ya que hay que mandarlas como Pchar, que es el formato que usa C. Los arrays o estructuras de datos se pueden enviar como punteros.
Responder Con Cita
  #6  
Antiguo 01-03-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Es la primera vez que pruebo a hacer una dll en C. Espero que este bien

El código de la primera dll (suma.c) es el siguiente:
Código:
__declspec(dllexport) int __stdcall Suma(int a, int b)
{
 return a+b;
}
La compilacion la hice con MinGW de esta manera (quitar los espacion ente los ++):
Código:
g + + -c suma.c
dllwrap --def suma.def suma.c -o suma.dll
Donde "suma.def" es:
Código:
LIBRARY    suma.dll
EXPORTS
    Suma = Suma@8                      @1
Para utilizar el código desde Delphi la importo así:
Código Delphi [-]
function Suma(a,b: integer): integer; stdcall; external 'suma.dll' name 'Suma';
Archivos Adjuntos
Tipo de Archivo: zip suma.zip (3,9 KB, 20 visitas)
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Integración de php y delphi Will PHP 4 10-08-2006 23:13:48
Integración Google earth Luci Internet 5 21-11-2005 15:14:35
Integración de datos kalimero Firebird e Interbase 3 17-02-2005 22:03:38
Integracion de una Aplicacion de Flash 5.0, a una forma en Delphi 6... delphi_gama Gráficos 2 22-08-2003 00:41:17
integracion de Hardware y sofware beatrizmh Conexión con bases de datos 1 17-08-2003 09:25:28


La franja horaria es GMT +2. Ahora son las 03:56:00.


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