Cita:
Empezado por raulb
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.
