Delphi - Sobre Objetos COM

 
Vista:

Sobre Objetos COM

Publicado por Angel (2 intervenciones) el 28/11/2002 17:04:11
Me gustaria saber como puedo generar una interfaz en Delphi a un objeto COM que me permita devolver objetos o registros, en vez de tipos simples de datos.

Se puede hacer lo que estoy preguntando o se me esta pirando un poco la pinza?

Si se puede hacer, seria un detallazo que me enviaran algun ejemplo o algo de codigo fuente.

Gracias por adelantado.

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Sobre Objetos COM

Publicado por mamcx (533 intervenciones) el 29/11/2002 16:36:00
Eso depende. Resulta que COM tiene unos lios con el "marshaling" de datos, que no es otra cosa que el proceso de empaquetado/desempaquetado de informacion entre procesos (un proceso=thread). Debido a ello, hay cosas que NO se pueden pasar, a excepcion de:

1- Tipo simples, como integer, string, etc..
2- Arrays VARIANT
3- Por lo anterior, obvio un VARIANT
4- Objetos COM.

Si deseas pasar mas de un registro, hay estas opciones:

1- Pasar array: Convierte los datos en un array, ademas de empaquetar de alguna manera la estructura de esos datos (como el nombre del campo, tipo de datos) para poder reconstruir.
2-Pasar XML: Convierte a XML. Excelente si es para pasar a travez de Internet o una intranet, si necesitas soporte multiplataforma/multilenguaje (con arrays tambien), pero no es ideal si es mucha informacion.
3-Pasar un ClientDataset: Con Delphi Enterprise puedes usar MIDAS. La opcion refacil con Delphi... Si tienes Delphi 7, tambien viene con Profesional y el MIDAS es 100% gratis.
4-Pasar ADO Recordsets: Si usas los componente ADO, la opcion obvia
5- Inventar tu propio objeto COM que respete todas la reglas de marshaling o crear tu propio sistema de marshaling=Mejor quedate con las opciones 1-4 :)

Para ejemplos:
1- Cada cual lo hace a su manera
2- Simplemente conviertes a XML y lo pasas como string normal
3- En la carpeta de Demos de Delphi hay ejemplos
4- Igual en la carpeta de demos. La diferencia es que haces una funcion que devuelva recorset como ObtenerClientes:_RecordSet15;

Listo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sobre Objetos COM

Publicado por Angel (2 intervenciones) el 01/12/2002 11:04:20
OK, gracias por la respuesta.

Probare las opciones que me has comentado a ver que tal...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar