Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

 
 
Herramientas Buscar en Tema Desplegado
  #9  
Antiguo 29-07-2012
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.025
Poder: 27
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Cita:
Empezado por jocaro Ver Mensaje
De todos modos os rogaría un ejemplo de los dos primeros pasos; insertar y compilar la unidad de código C en el entorno Delphi y un ejemplo genérico de acceso a una función del código C desde un método en Delphi.
Lo intentaré, pero aviso que lo hago de memoria y sin probarlo, ¿eh? Posiblemente necesite algún ajuste.

Primero, el código C podría ser algo así:
Código:
/* Ejemplo para llamar desde Delphi. */
  int calcula_cuadrado (int numero)
  {
    return numero * numero;
  }
Ahora, la unidad "envolvente":
Código Delphi [-]
UNIT UnidadEnvolventeC

(* La línea siguiente no recuerdo si era así o usando $obj ó $l ... *)
{$link 'ejemplo.obj'}

INTERFACE
(* Función C. *)
  FUNCTION calcula_cuadrado (Numero: INTEGER): INTEGER; CDECL;
  EXTERNAL;

IMPLEMENTATION
END.

Y ahora el uso:
Código Delphi [-]
PROGRAM Ejemplo
{$mode console} (* ¿Era así? Es que en Free Pascal no hace falta XP *)

USES
  UnidadEnvolventeC;

VAR
  V1, V2: INTEGER;
BEGIN
  V1 := 20;
  V2 := calcula_cuadrado (V1);
END.

Ten cuidado con los tipos de dato de los parámetros y los valores que devuelve. Por ahí hay tablas que muestran la correspondencia entre los diferentes tipos, pero no te guíes por las apariencias porque a veces el tipo "int" de C no se corresponde con el tipo "INTEGER" de Pascal sino con "SMALLINT" ó con "LONGINT".

También ten en cuenta que el mapa de memoria no es idéntico en C y en Delphi, de ahí que se use "CDECL" en el código Pascal. La mayor parte de compiladores de C tienen una directiva que permite hacer lo opuesto (es decir, que la parte escrita en C use un mapa de memoria similar al de Pascal), pero no suele usarse mucho.

Y otra cosa: no uses C++, aparte de porque es un lenguaje horrible con todo lo malo de C y poco bueno añadido, porque el mapa de memoria de C++ es tan diferente del de Delphi que es casi imposible compartir datos. Hazlo todo en C.

Última edición por Ñuño Martínez fecha: 29-07-2012 a las 02:23:25.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Sustituir Codigo ASCII Fichero texto lacovera Varios 12 13-11-2009 14:38:28
Acceso a código generado por script Kafu HTML, Javascript y otros 1 09-03-2008 04:39:45
como crear codigo de acceso frholguin Varios 2 24-01-2006 18:59:16
Exportar el codigo fuente de una UNIT a HTML le4br Varios 2 21-02-2005 04:08:02
El CNI tendrá acceso al código fuente de Windows ... kinobi Noticias 6 21-01-2004 21:13:35


La franja horaria es GMT +2. Ahora son las 08:11:24.


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