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 16-10-2008
gushynet gushynet is offline
Miembro
 
Registrado: ago 2008
Posts: 26
Poder: 0
gushynet Va por buen camino
Question registros, clases y dll's

Hola a todos, aqui va una duda sobre dll's y algo mas:

Supongamos que hemos declarado en pseudocódigo una clase y un registro (record) que tienen una propiedad y un campo de tipo entero respectivamente(por ponerle algo a la clase y al registro).

La pregunta es si estas estructuras internamente son representadas de manera similar por los distintos lenguajes(los que soportan estas estructuras) . Es decir, si la clase y el registro declarado en delphi ocupa lo mismo que declarado en c++ (por nombrar dos lenguajes) y si internamente son representados de la misma manera desde el punto de vista del sistema operativo y desde el punto de vista del compilador.

El motivo de la pregunta es que estoy viendo las dll's en delphi, y en todos los ejemplos que he visto las funciones y procedimientos siempre tienen como parámetros tipos simples y nunca objetos o tipos registros (punteros tampoco he visto), por lo que me preguntaba si a través del uso de las dll`s se puede dar esta situación:

tengo una dll(en principio hecha en delphi) llamada Operaciones que contiene procedimientos y funciones algunos de los cuales tienen uno o varios parámetros de tipo TObjeto.

TObjeto es una clase hecha en Delphi.

Si quisiera compartir esta dll con una persona que programa en c++builder ¿podría usarla si declara TObjeto exactamente igual en c++ para poder asi usar los porcedimientos y funciones de la dll que precisan del tipo TObjeto?


Suponiendo que se pudiera declarar una clase o un tipo de dato registro en una dll (en este momento no lo se) se podría desde otro lenguaje usar esos tipos declarados en la dll.


Gracias por las respuestas de antemano. Un saludo.
Responder Con Cita
  #2  
Antiguo 16-10-2008
amezeta32 amezeta32 is offline
Miembro
 
Registrado: ago 2006
Ubicación: Mérida Yucatán Mex.
Posts: 32
Poder: 0
amezeta32 Va por buen camino
Saludos!!

Cita:
Empezado por gushynet Ver Mensaje
Hola a todos, aqui va una duda sobre dll's y algo mas:

Supongamos que hemos declarado en pseudocódigo una clase y un registro (record) que tienen una propiedad y un campo de tipo entero respectivamente(por ponerle algo a la clase y al registro).

La pregunta es si estas estructuras internamente son representadas de manera similar por los distintos lenguajes(los que soportan estas estructuras) . Es decir, si la clase y el registro declarado en delphi ocupa lo mismo que declarado en c++ (por nombrar dos lenguajes) y si internamente son representados de la misma manera desde el punto de vista del sistema operativo y desde el punto de vista del compilador.

En cuanto a tamaño no debe de haber problema alguno, siempre y cuando los tipos sean equivalentes, lo que si te puede causar problemas es la alineación por ejemplo que en delphi este a byte y en builder a quaword por decir un ejemplo, yo he probado de delphi hacia builder usando el hpp que me genera delphi y no te tenido problema.

El motivo de la pregunta es que estoy viendo las dll's en delphi, y en todos los ejemplos que he visto las funciones y procedimientos siempre tienen como parámetros tipos simples y nunca objetos o tipos registros (punteros tampoco he visto), por lo que me preguntaba si a través del uso de las dll`s se puede dar esta situación:

Si existen punteros en delphi de hecho hasta donde se las clases vcl de delphi con en realidad punteros "ocultos", genera un pas y checa como te genera el hpp. En cuanto a pasar objetos, no debes de tener problemas.

tengo una dll(en principio hecha en delphi) llamada Operaciones que contiene procedimientos y funciones algunos de los cuales tienen uno o varios parámetros de tipo TObjeto.

TObjeto es una clase hecha en Delphi.

Si quisiera compartir esta dll con una persona que programa en c++builder ¿podría usarla si declara TObjeto exactamente igual en c++ para poder asi usar los porcedimientos y funciones de la dll que precisan del tipo TObjeto?

Sin ningun problema.

por ejemplo

En funcion.pas

procedure MyFuncion(var objeto:TComponent);
begin
end;

En funcion.hpp
void MyFuncion(TComponent* objeto)
{

}




Suponiendo que se pudiera declarar una clase o un tipo de dato registro en una dll (en este momento no lo se) se podría desde otro lenguaje usar esos tipos declarados en la dll.


Gracias por las respuestas de antemano. Un saludo.
de nada espero haberte ayudado
Responder Con Cita
  #3  
Antiguo 16-10-2008
gushynet gushynet is offline
Miembro
 
Registrado: ago 2008
Posts: 26
Poder: 0
gushynet Va por buen camino
Question

Gracias por el cable, aunque no me ha quedado el tema claro:

- si tengo una clase hecha en delphi(u otro lenguaje) y la coloco en una dll ¿es posible instanciar objetos de esta clase en otros lenguajes?

Es decir, si en C++ tengo implementada la clase TCoche dentro de la dll, en delphi podría hacer algo como lo siguiente: usar en delphi los tipos creados en c++, como en este ejemplo, una clase.

Código Delphi [-]
var    Objeto : TCoche; 
..... 
Objeto := TCoche.Create(); 
 //procedimiento situado en la dll que acepta un parámetro de tipo TCoche 
Operar(Objeto);



Gracias por la paciencia y por las respuestas.
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
Sobre dll's JF Sebastian OOP 0 17-07-2008 07:51:30
Los ayudantes de clases (o clases ayudantes), ¿ya se gestaban en Delphi 7? Al González OOP 5 12-12-2007 09:03:52
Threads in DLL's Gianni Varios 0 20-07-2007 22:18:23
Utilización de DLL's Enan0 Varios 2 19-05-2004 20:43:13
creación dll's selenacd Varios 2 17-11-2003 18:17:10


La franja horaria es GMT +2. Ahora son las 22:38:24.


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