fíjate que no señalo ninguna ruta... ¿ por qué ? te preguntaras... porque cuando he compilado el proyecto automáticamente se ha registrado la librería.
]Recibia Error de compilacion: No se ha definido el tipo definido por el usuario.Exactamente. Si no hay una referencia añadida no se puede usar NEW, porque no consta en la tabla (ROT) dicho objeto. Precisamente para eso sirven las referencias, para localizarlo en la tabla, por eso usar referencias es más rápido... Cuando se usa NEW, por debajo le está diciendo que debe buscarlo en la ROT y crear una instancia desde allí. Usando CreateObject le está diciendo que busque en el registro. y GetObject le está diciendo que si ya hay una instancia cargada con createobject, la obtenga de ahí (ahorra tiempo en verificaciones) y si no que la localice en el registro...
Y lo sigo recibiendo. Supongo que si no se hace referencia entrando a Proyecto – Referencias, y agregando el ActiveX, no se puede hacer referencia de la manera que expuse anteriormente.
Si no deje algo en claro, comentamelo, para tratar de exponerlo un poco mejor.:rolleyes: Eres tú quien pregunta y tienes dudas... yo lo tengo muy claro.
Pues nuevamente, te agradezco mucho tu tiempo y tu ayuda. :beer: :good: :good:
Nebire escribio::huh:
Eres tú quien pregunta y tienes dudas... yo lo tengo muy claro.
Hola de nuevo, ya ando por aqui otra vez :PEsto te lo decía en broma... entendí que al intentar explicarte, te pareció no desenvolverte bien y enbarullarlo más...CitarNebire escribio::huh:
Eres tú quien pregunta y tienes dudas... yo lo tengo muy claro.
Yo se que tu lo tienes claro, puesto que me explicaste y me ayudaste a resolver mi problema.
Me referia a si no habia enredado mucho comentando lo que estaba haciendo, de forma que solo yo me estuviera entendiendo, y si habia explicado esta vez la raiz del problema que tenia.
Es correcto, pero siempre que puedas usa referencias, piensa que además de lo referente a la tabla, si en tiempo de diseño se declara el tipo de objeto, cuando se compila no necesita comprobar los tipos, por lo que resulta más rápidoCódigo: Visual Basic
dim fso, carp set fso=GetObject("", "Scripting.FileSystemObject") set carp=fso.GetFolder("C:Documents and SettingsDeathWatchMis documentosScripts") x=carp.Name msgbox x set fso=Nothing set carp=Nothing
En mi ejemplo, al registrar el Exe ActiveX con /RegServer, debo usar GetObject en lugar de CreateObject?Son similares, pero se usa Create object para obtener la 1º referencia y luego getObject para las siguientes...
Si no lo registro, usando Set Ejec_1 = GetObject("C:Documents and SettingsDeathWatchMis documentosXEjecutor.exe", "XProyEjec.XClsEjec"), funcionaría?Esto está equivocado... no me leiste bien al final del post anterior
Set Ejec_1 = GetObject("C:Documents and SettingsDeathWatchMis documentosXEjecutor.dll", "XProyEjec.XClsEjec")
Luego, si por ejemplo tu aplicación opera con un tipo de archivo cuya extensión fuera pongamos ".banco" , podrías utilizar la función getobject para crear el objeto cargando ya el archivo indicado...Código: Visual BasicY por tanto como podrás ver, nada tiene que ver esta ruta con la ruta donde se localiza el exe activeX
dim miObjeto as object Set miObjeto= GetObject("C:archivo.banco", "MiproyectoActivexexe.Suclase")
(Esto lo voy a probar personalmente, pero si no funciona, si me pudieras comentar la razon, porfas)No te molestes, ya te he indicado que eso no es correcto... y te he indicado la razón.
Una ultima pregunta :PÉchale un vistazo al 'patrón Singleton', bucea por 'gúgel'...
Usando el ejemplo que puse, si en lugar de un Exe ActiveX fuera un Dll ActiveX, tal cual con los objetos form y timer y demas, he indicando en las propiedades del proyecto, Subprocesos independientes, si escribo
podria funcionar? respetando el multi-threading?
DeathWatch escribió:
Si no lo registro, usando Set Ejec_1 = GetObject("C:Documents and SettingsDeathWatchMis documentosXEjecutor.exe", "XProyEjec.XClsEjec"), funcionaría?
Set Ejec_1 = GetObject("C:Documents and SettingsDeathWatchMis documentosXEjecutor.dll", "XProyEjec.XClsEjec")
Nebire escribió:"MiproyectoActivexexe.Suclase" hace referencia al proyecto y clase del ActiveX, pero "C:archivo.banco", donde se carga, que carga (las clases del archivo .banco?), para que sirve el 1er parametro si el 2do no hace referencia a él, si es para que al ya estar cargado, posteriormente se pueda instanciar por ejemplo ("MiPoryectoArchivoBanco.Subclase"), etc?
Luego, si por ejemplo tu aplicación opera con un tipo de archivo cuya extensión fuera pongamos ".banco" , podrías utilizar la función getobject para crear el objeto cargando ya el archivo indicado...Código: Visual Basic
dim miObjeto as object Set miObjeto= GetObject("C:archivo.banco", "MiproyectoActivexexe.Suclase")
Y por tanto como podrás ver, nada tiene que ver esta ruta con la ruta donde se localiza el exe activeX
Hola que hay :DCreo que me he explicado bien, sin embargo es normal que a pesar de ello a veces alguien no acabe de entender una cosa que nos parece (al que lo explica) bastante clara..
pero "C:archivo.banco", donde se carga, que carga (las clases del archivo .banco?), para que sirve el 1er parametro si el 2do no hace referencia a él
Un saludo :)