Ver Mensaje Individual
  #2  
Antiguo 06-08-2004
CORBATIN CORBATIN is offline
Miembro
 
Registrado: may 2003
Ubicación: España
Posts: 131
Reputación: 22
CORBATIN Va por buen camino
Wink

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í:
Código:
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í:
Código:
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.
__________________
No hay vientos favorables para quién no conoce su rumbo.
Responder Con Cita