Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   ¿Cómo importar componentes ActiveX externos a Delphi? (https://www.clubdelphi.com/foros/showthread.php?t=92230)

SoftIber 01-09-2017 17:33:25

¿Cómo importar componentes ActiveX externos a Delphi?
 
Hola a todos,

Soy nuevo en Delphi, estoy trabajando con la versión Trial 10.2 Tokyo.
He heredado el código fuente de una aplicación industrial de escritorio, que conecta con diferentes dispositivos electrónicos.

El fabricante de uno de los dispositivos, aporta su software de control y las .dll de su dispositivo, el cual yo tengo que controlar desde mi aplicación.

Después de instalar el software del fabricante, abro el código fuente de mi aplicación y en la cláusula 'uses' del módulo dónde se indican los componentes que se van a utilizar, marca con error la declaración de dicho componente y aparece el error (Cannot resolve unit name ‘**componente**.TLB’).

Viendo que no reconoce el componente, realizo una importación de componentes ActiveX (tal como declara el fabricante) desde Delphi. Me crea un “**componente**_TLB.PAS” y “**componente**_TLB.DCR” en un path de librerías que Delphi ya tiene especificadas.

El error anterior desaparece, pero las constantes de ese componente declaradas bajo la cláusula 'interface' no las reconoce, mostrando el mensaje de error (Undeclared identifier ...)

No se si me he explicado bien (espero que si).

A ver si alguien me puede dar algo de luz.
Muchas gracias de antemano.

ElKurgan 04-09-2017 07:47:22

Una cosa es que los Active X los importe en un Path específico y otra cosa es que la aplicación vea dicho path por defecto.

Mira a ver en "Tools\Options\Delphi Options\Library Path" si está incluído ahí el path de las librerías.

Si todo está bien, entonces tendremos que ver otras opciones


Saludos

SoftIber 04-09-2017 09:40:24

Hola ElKurgan,
Lo primero, muchas gracias por responder.

He revisado... y el path donde me genera la importación de los componentes, está declarado en la "Library Path".

ElKurgan 05-09-2017 07:06:17

El error de "Undeclare identifier" suele aparecer por un sólo motivo, y es que la Unit donde se va a utilizar dicho "identifier" no tiene incluida en su claúsula "uses" la unit donde está definido.

Ojo, que a veces el compilador te da error en una unit y resulta que el error es porque en esa unit se llama a otra que es la que tiene el error de verdad.

No se, con las explicaciones que das no puedo aclararte más cosas.

Saludos

SoftIber 06-09-2017 16:38:05

Hola ElKurgan,

Perdón si no soy lo suficientemente claro, recuerda que soy nuevo en el mundo Delphi y todavía desconozco muchos detalles del IDE y sus entrañas.
Intentaré explicar con más detalle el problema.

Uno de los dispositivos que tengo que controlar desde mi código fuente, trae un instalador con su software de entre los cuales incluye sus *.dll y *.ocx pertinentes, pero no trae paquetes ni librerías para Delphi (.bpl, .dcp, .dcu, .pas ,etc), lo que interpreto que me lo debo generar yo a partir de las DLL, OCX o EXE.

Ahí es donde viene mi problema, que no se si esa importación en Delphi, la estoy haciendo correctamente.
No sé si lo debo Importar “Type of Component” -> “Import ActiveX Control” -> Ahí selecciono el DLL, OCX o EXE del software del fabricante del dispositivo. (no sé si estoy diciendo una tontería) o crear un package.
Como comentaba en el primer post, he heredado éste código fuente y veo que en la cláusula “uses”, hace mención de una unidad que no dispongo.

ElKurgan 07-09-2017 07:54:36

A ver, la importación es correcta.

El problema de que no identifique variables puede ser otro. A lo mejor tienes que importar más librerías. Sin conocer el producto o la librería de tipos original, ni el ".pas" importado es difícil saber que problema es el que tienes.

Por ejemplo, en el trabajo necesitamos acceder a RFCs de SAP desde Delphi. Para ello importamos las librerías de tipos que se instalan en los ordenadores cuando se instala el cliente SAP. Pero no nos basta con importar un sólo OCX, ya que SAP instala al menos 20 0 30 librerías Active X. No todas las necesitamos, claro, pero al menos tres o cuatro si que hay que hacerlo.

Eso si, cuando usamos las variables y definiciones importados al "xxx_tlb.pas", es en el programa, formulario o unit que las usa donde tenemos que añadirlas al USES.

No se si me he explicado bien, si pudieras dar mas pistas....
Saludos


La franja horaria es GMT +2. Ahora son las 15:16:16.

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