Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Error Accessing the OLE Registry (https://www.clubdelphi.com/foros/showthread.php?t=91166)

gaunmanuel 22-11-2016 22:26:45

Error Accessing the OLE Registry
 
Que tal, buenas tardes.
Tengo una detalle con una libreria COM, no se si asi se le llama... pero les comento:
Cree una libreria en C#.net y dicha libreria se importo a Delphi 7.0 y se creo un componente, todo funciona correctamente en la maquina donde estoy desarrollando...
Sin embargo cuando la aplicación de Delphi la ejecuto en otra maquina, me muestra el siguiente mensaje:
Cita:

Error accessing the OLE registry
tienen alguna idea de que necesito para que funcione en cualquier computadora.

gracias.

exmachina 23-11-2016 03:04:28

Probablemente la libreria no se ha registrado. Deberias comprobar si esta compilada en modo "AnyCPU" ya que podria darse el caso que tu app (32-bit, ya que dices esta creada con Delphi 7) se ejecute en una maquina x86-64 y en este caso la libreria no funcionaria ya que lo de "AnyCPU" significa que se ejecuta en modo 64-bit en plataformas x86-64 y en modo 32-bit en plataformas x86. Si creas librerias COM con .NET debes compilarlas para la plataforma especifica en la que se usen, es decir-> nunca debe usarse "AnyCPU" .

Aparte de lo anterior, deberias haber especificado el sistema operativo...etc, mas que nada para no dar palos de ciego.


Yo vengo del mundo .NET (aunque no soy programador) y te puedo asegurar que aunque con .NET se pueden crear "librerias COM" y "controles OCX" estos dan muchos problemas y requieren mucha memoria (cargan el .NET Framework) y no basta con activar la casilla "Registrar para interoperabilidad COM" en las propiedades del proyecto. Lo ideal es crearlos con Visual C++ o incluso con Delphi.

Un saludo

gaunmanuel 23-11-2016 17:46:23

Gracias exmachina.
tienes razón estas librerias dan muchos problemas, ya lo intente especificando la plataforma, pero aun asi sale el mismo mensaje.
Creo que lo dejaremos así, optare por otra forma, quiza hacer una aplicacion de consola y ejecutarla con parametros desde delphi.

muchas gracias por tu respuesta.
saludos.

exmachina 25-11-2016 18:00:36

Hola. Creo que el problema es que no esta registrada. ¿Como la registras en la otra maquina?. Yo use Regasm.exe y funciono bien (Innosetup tambien lo usa para estas tareas); mediante programación, con .NET, puedes usar la clase RegistrationServices.

Lo unico que creo que puede ser diferente es que yo NO cree un ensamblado en el que se exponia alguna cosa a COM-> Yo cree una libreria cuya unica finalidad era usarse con COM y para ello primero defini la interfaz y despues cree su implementacion ("CoClass", como en delphi o C++), por ejemplo:

Código:

namespace COMe
{
    [Guid("........El que sea.........")]
    [InterfaceType(ComInterfaceType.InterfaceIsDual)]
    public interface IPatatin
    {
        [DispId(1)]
        int a { get; set; }
        [DispId(2)]
        int b { get; set; }
        [DispId(3)]
        int c { get; set; }
        [DispId(4)]
        int d ()
    }

    //
    // IMPLEMENTACION
    //
    [Guid("........El que sea.........")]
    [ClassInterface(ClassInterfaceType.None)]
    [ProgId("COMe.Patatin.1")]
    public class Patatan: IPatatin
    {
        public int a { get; set; }
        public int b { get; set; }
        public int c { get; set; }

        public int d()
        {
            throw new NotImplementedException();
        }
    }

}



La franja horaria es GMT +2. Ahora son las 00:14:08.

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