Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Providers
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-03-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 17
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
He utilizado el asistente para crear un server datasnap; le he dejado tildada la opcion para inlcuir los metodos de prueba (EchoString y ReveseString)

Luego modifique la implementacion de esos dos metodos para que devuelvan tambien el nombre de la clase que "hace el trabajo":

Código Delphi [-]
function TServerMethods1.EchoString(Value: string): string;
begin
  Result := ClassName + ', '  + Value;
end;

function TServerMethods1.ReverseString(Value: string): string;
begin
  Result := ClassName + ', '  + StrUtils.ReverseString(Value);
end;

Luego puse el server en ejecucion, y cree el cliente, simplemente con el componente TSQLConnection y puse la propiedad DriverName a "Datasnap"; por ultimo hice click derecho y seleccione "generate DataSnap client classes"

Esto genera una nueva unidad con la clase proxy "TServerMethods1Client"

A partir de esto, puedo escribir este codigo sencillo en el form principal del cliente:

Código Delphi [-]
procedure TForm2.FormCreate(Sender: TObject);
begin
  Methods1 := TServerMethods1Client.Create(SQLConnection1.DBXConnection);
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
  Edit1.Text := Methods1.EchoString('Hola');
  Edit2.Text := Methods1.ReverseString(Edit1.Text);
end;

Hasta aca es el tipico tutorial Datasnap

Para agregar un nuevo modulo de datos, solamente basta con volver al projecto del servidor, agregar un nuevo TDataModule; no hay que olvidarse de la directiva {$METHODINFO}, eso te podes fijar como lo genera el asistente. Esa directiva basicamente controla que metodos se exponen y cuales no

Llame a este nuevo modulo de datos TServerMethods2, que esta implementado igual que el TServerMethods1:

Código Delphi [-]
{$METHODINFO ON}
  TServerMethods2 = class(TDataModule)
  public
    function EchoString(Value: string): string;
    function ReverseString(Value: string): string;
  end;
{$METHODINFO OFF}

function TServerMethods2.EchoString(Value: string): string;
begin
  Result := ClassName + ', '  + Value;
end;

function TServerMethods2.ReverseString(Value: string): string;
begin
  Result := ClassName + ', '  + StrUtils.ReverseString(Value);
end;

Volvi a mi cliente, y volvi a "generate DataSnap client classes", y en este caso la unit generada ahora 2 clases:

Código Delphi [-]
TServerMethods1Client = class(TDSAdminClient)
[...]

TServerMethods2Client = class(TDSAdminClient)
[...]

Asi que es muy facil modificar el codigo para usar una u otra, este es el Form de la aplicacion cliente:

Código Delphi [-]
type
  TForm2 = class(TForm)
    SQLConnection1: TSQLConnection;
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    Methods1: TServerMethods1Client;
    Methods2: TServerMethods2Client;
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.FormCreate(Sender: TObject);
begin
  Methods1 := TServerMethods1Client.Create(SQLConnection1.DBXConnection);
  Methods2 := TServerMethods2Client.Create(SQLConnection1.DBXConnection);
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
  Edit1.Text := Methods1.EchoString('Hola');
  Edit2.Text := Methods1.ReverseString(Edit1.Text);
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
  Edit1.Text := Methods2.EchoString('Hola');
  Edit2.Text := Methods2.ReverseString(Edit1.Text);
end;

Saludos
Responder Con Cita
  #2  
Antiguo 17-03-2016
juniorSoft juniorSoft is offline
Miembro
 
Registrado: abr 2005
Posts: 178
Poder: 22
juniorSoft Va por buen camino
Gracias AgustinOrtu por tu pronta y excelente respuesta
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
DataSnap + Firedac F3niX Conexión con bases de datos 0 10-02-2015 22:03:41
Servidor DataSnap cmfab Varios 8 20-10-2014 12:54:00
Servidor DataSnap Existente muli Providers 4 04-07-2014 02:29:43
exportar servidor datasnap JULIPO Providers 0 28-02-2012 04:34:07
DataSnap residente en el servidor !!! Velia Providers 0 18-05-2006 15:06:25


La franja horaria es GMT +2. Ahora son las 02:49:46.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi