Club Delphi  
    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 Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-09-2010
raulb raulb is offline
Registrado
 
Registrado: feb 2005
Posts: 8
Poder: 0
raulb Va por buen camino
Utilizando COM con delphi

Tengo una DLL registrada que me genero un UCBioBSPCOMLib_TLB.pas,
Creo un form y en el uses cito UCBioBSPCOMLib_TLB, hasta ahi todo ok, pero UCBioBSPCOMLib_TLB.pas es una clase con 7 interfaces, en consecuencia cuando la quiero usar

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
scannero : UCBioBSP;
scannerid : IDevice;
{ Private declarations }
public
{ Public declarations }
end;

scannero := CreateComObject(CLASS_UCBioBSP) as UCBioBSP;
hasta aca todo ok, porque puedo acceder a las propiedades y funciones

Pero las funciones que necesito esta en una Interface IDevice y según un ejemplo en VB6 y transformado a delphi debería hacer

scannerid := scannero.device;

y de esa manera comenzar a utilizar las propiedades y funciones de esa interfase, pero ocurre algo curioso :

scannero.device es un Olevariant y no es compatible con el tipo Idevice definido para scannerid

Existe alguna forma de al momento de crear el objeto
createcomobject, se puede crear las demas interfaces ???.

y si no como las inicializo para poder utilizarla ???

Gracias





showmessage(inttostr(scannero._Release));
showmessage(scannero.MajorVersion);
showmessage(scannero.MinorVersion);
scannerid := scannero.
showmessage(inttostr(scannerid.OpenedDeviceID));
Responder Con Cita
  #2  
Antiguo 30-09-2010
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por raulb Ver Mensaje
Pero las funciones que necesito esta en una Interface IDevice y según un ejemplo en VB6 y transformado a delphi debería hacer

scannerid := scannero.device;

y de esa manera comenzar a utilizar las propiedades y funciones de esa interfase, pero ocurre algo curioso :

scannero.device es un Olevariant y no es compatible con el tipo Idevice definido para scannerid
Hola raulb.

Los tipos Variant y OLEVariant sí son compatibles con las interfaces.

La solución es declarar al elemento scannerid como OLEVariant, o bien asignarle scannero.device haciendo un molde de tipo (type casting):

Código Delphi [-]
scannerid := IInterface (scannero.device) As IDevice;

En efecto, aún cuando optes por la primera opción (declarar a scannerid como OLEVariant), podrás tratar a ese campo de la clase como un objeto.

scannerid.PropiedadX := Valor;
scannerid.MetodoX (Parametros);

Además de las expresiones de tipo clase y objeto, Delphi admite esta sintaxis con los valores de tipo Variant / OLEVariant. Claro, siempre que el variante en cuestión contenga una interfaz y la sentencia o expresión sea válida (si la propiedad o método no existe en la interfaz o están mal dados los parámetros, se elevará una excepción al ejecutarse).

Espero sea de utilidad.

Saludos.

Al González.
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
Utilizando INSTALLSHIELD, DELPHI 7 magnu9 Conexión con bases de datos 2 17-03-2008 23:15:32
Error utilizando GetModuleUsage en WinExecAndWait32 en Borland Delphi 7 feidakila API de Windows 0 22-08-2007 18:51:43
Excel con delphi 5 utilizando Bde zugazua2001 API de Windows 0 30-05-2005 16:18:49
Como publicar una web desarrollada en Delphi utilizando Intraweb e Interbase? JoelCarlos Internet 0 19-11-2004 22:07:35
Como agilizar actualizacion de tablas desde la red utilizando delphi, sql, dbaseIV Silviña Conexión con bases de datos 3 19-05-2004 17:23:10


La franja horaria es GMT +2. Ahora son las 08:57:25.


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