PDA

Ver la Versión Completa : Error con CORBA y el OrbPas41.dll


zuriel_zrf
06-08-2004, 07:47:58
Hola.
Aguien me puede ayudar a resolver un problema de CORBA en Delphi 6? Es que al correr el servidor me aparece un error de ejecucion que dice que una de las librerias vinculadas con la aplicacion no se encuentra o no se puede inicializar y me marca el archivo orbpas41.dll. Esto ocurre tanto con el servidor como con el cliente. Siempre antes de correrlos ya tengo corriendo el osagent. Ademas utilizo el visibroker 4 y hago las aplicaciones con la paleta de corba que viene en Delphi 6. Les Agradeceria si me pueden ayudar a resolver esto.

Gracias

CORBATIN
06-08-2004, 16:04:48
Hola, no sé exactamente como lo estas haciendo. Yo me estoy iniciando en el tema de Corba, pero si he podido realizar algunas pruebas y me han funcionado, así es como yo lo hago:

Creo un objeto corba (quedate con este nombre que pongas, luego te va a hacer falta).
En el Type Library creo una función (en el type library llamada metodo)llamada suma (es para que pruebes) en la que recibe un param1 tipo long y devuelve un param2 de tipo long* (ojo al asterisco, esto indica un parametro de salida). En el siguiente cuadro cambias la directiva in por out,retval.
Ahora le das al botón refrescar (algo parecido a una hoja de notepad).
Esto te crea un archivo nombredelproyecto.idl, compila el proyecto (ojo, no ejecutar, solo compilar) guarda este archivo a través del type library (con el botón que hay al lado del botón de refrescar, "Export to CORBA IDL") es la base de todo.
Después cierras todo, en la paleta de proyectos "corba" pinchas sobre "corba serve object" o algo así, y entonces añades el archivo *.idl anterior.
Esto te crea el stub (lado del cliente) y el skeleton (lado del servidor), que son los archivos que necesitas para poner en el lado del cliente y del servidor (también crea automáticamente archivos que continen toda la implementación nombre_c.pas,nombre_i.pas,nombre_s.pas,nombre_impl.pas).

A partir de aquí te puedes guiar con el demo de delphi 6 en demos\cobar\idl2pas\account gui, es básico y fijate en las declaraciones de los archivos mencionados anteriormente.

Esta operación anterior, crea el código necesario para hacerlo funcionar pero este te lo pone como comentario. Entonces lo que debes hacer es quitar estas barras de comentario y sustituir el tipo de la variable account por el nombre de tu interface, es decir, el nombre del tipo que escribiste (recuerda que tenías que memorizarlo), en los create de los form correspondiente del servidor y cliente tienes que poner la llamada al procedimiento InitCorba.

Iniciando el smart agent te debe funcionar sin problemas y para hacer la llamada al procedimiento almacenado es así:

procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := FormatFloat('Balance = $#,##0.00', Acct.suma(2));
end;


Destacar que en el proyecto cliente, tienes que añadir al uses los archivos nombreproyecto_I, nombreproyecto_C. Estos archivos son los que forma el stub para que se pueda poner en contacto el cliente con el servidor.

También añadir, que en el archivo nombreproyecto_impl.pas es dónde tienes que implementar la función suma que anteriomente creamos en el type library. Esto no es dificil de ver, ya que estara ya creada, solo tendrías que añadir el código, sería algo así:

function TAccount.suma(param1: integer) : integer;
begin
{ *************************** }
{ *** User code goes here *** }
{ *************************** }
result := param1 + 2;
//este el código que tendrías que añadir o en vez de manejar
end;



Bueno, es un pequeño manual más o menos bueno, si necesitas más ayuda tal vez te pueda mandar algún manual sobre esto o simplemente ayudar a través de este foro, un saludo.

zuriel_zrf
10-08-2004, 16:47:40
Gracias por la informaciòn pero funciono en una maquina que tiene XP. Pero tengo otra maquina (que es la importante) que tiene ME y no quiere jalar. Da un error que dice que "Una de las librerias vinculadas a la aplicación no se encuentra: Orbpas41.dll".

Si saben de este error avísenme.

Gracias.

david duarte
03-08-2005, 00:07:34
si no mal me equivoco, tienes que copiar ese archivo a donde tienes tu aplicacion, para que funcione, ya que corba utiliza ese archivo y otros para que corra en una maquina que no tiene instalado delphi ni corba.

Checa a ver si funciona y si no, pues vuelve a poner el error que te sale, creo que ya no te deberia de salir ese mismo error.

omegaelite
10-06-2006, 06:07:24
Yo tuve un problema similar y lo solucioné descargando la libreria e instalandola en el .bin del ORB que estes utilizando, yo por ejemplo estoy usando visibroker. Y otra cosa que hice fué configurar el path. Veo que esta pregunta la hicieron hace mucho pero espero que le pueda servir a alguien mas en un futuro.
:) Saludos...

omegaelite
10-06-2006, 08:04:02
Ahhhh!
Me acabo de acordar que Visibroker 4 no es compatible con Delphi 6, entonces lo que tienes que hacer es instalar Visibroke 3.3 y fijate que te configure bien el path, sino hazlo manual.
Ahora si, adios.