PDA

Ver la Versión Completa : ¿Cómo importar componentes ActiveX externos a Delphi?


SoftIber
01-09-2017, 17:33:25
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