Jump to content
Fórum Script Brasil
  • 0

Banco de dados com Sockets


Soidho

Question

Boa tarde Pessoal,

Estou fazendo um programa aqui que acessa uma banco de dados. Estou selecionando alguns registros e jogando em uma MemoryTable. Essa MemoryTable esta ligada num DBGrid.

Eu gostaria de enviar o conteudo dessa MemoryTable para um cliente via sockts. É possivel? Como poderia fazer?

Obrigado.

Edited by Soidho
Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

use os componentes TServerSocket e TClienteSocket na aba internet

após a instalação deles use a função sendsocket..

Exemplo:

procedure button1.click (sender: TObject);

begin

ClientSocket1.Socket.SendText('DADOS A SEREM ENVIADOS');

end;

com essa função ele envia os dados para o servidor, caso queira enviar a um determinado cliente é o mesmo processo com o servidor.

Link to comment
Share on other sites

  • 0

Bom dia DelpheroMn.

Eu já estou usando os componentes citados. A questão que para enviar um texto normal eu já estou conseguindo. O problema é que eu queria enviar o conteudo de uma tabela que eu estou visualizando numa grid e gostaria de enviar para outra grid no cliente. Não sei se fui claro.

Obrigado pela atenção.

Link to comment
Share on other sites

  • 0
Eu gostaria de enviar o conteudo dessa MemoryTable para um cliente via sockts. É possivel? Como poderia fazer?

Por acaso do outro "lado da linha" o aplicativo é seu? Ou se é de outro, ele espera que tipo de informação?

Se for seu, voce determina o protocolo desta conversação - supondo que você possa utilizar esta via (socket) para passar outras informações que não apenas a tabela citada.

Link to comment
Share on other sites

  • 0

Bom, tem uma forma de fazer isso. No lugar onde está o client, você programa isso em um botão, ou onde desejar:

ClientSocket1.Socket.SendText(IntToStr('DADO1½DADO2½' +
      EdtDADO3.Text + '½DADO4½DADO5½');
Esse ½ servirá para separar um dado de outro, e você ira interpretar isso no servidor. Se você tiver apenas um parametro deverá ficar assim:
ClientSocket1.Socket.SendText(IntToStr('DADO1½½½½½');
Ou seja, você nunca vai apagar esse ½; No OnClientRead do servidor, você apaga tudo e adiciona esse código;
var
  texto: array [0 .. 4] of string;
  temptexto: AnsiString;
  I, IDx: Integer;
begin
  temptexto := Socket.ReceiveText;
  IDx := 0;
  for I := 1 to Length(temptexto) do
  begin
    if (temptexto[I] = '½') then
    begin
      texto[0] := Copy(temptexto, 1, I - 1);
      IDx := I;
      break;
    end;
  end;
  for I := IDx + 1 to Length(temptexto) do
  begin
    if (temptexto[I] = '½') then
    begin
      texto[1] := Copy(temptexto, IDx + 1, I - IDx - 1);
      IDx := I;
      break;
    end;
  end;
  for I := IDx + 1 to Length(temptexto) do
  begin
    if (temptexto[I] = '½') then
    begin
      texto[2] := Copy(temptexto, IDx + 1, I - IDx - 1);
      IDx := I;
      break;
    end;
  end;
  for I := IDx + 1 to Length(temptexto) do
  begin
    if (temptexto[I] = '½') then
    begin
      texto[3] := Copy(temptexto, IDx + 1, I - IDx - 1);
      IDx := I;
      break;
    end;
  end;
  for I := IDx + 1 to Length(temptexto) do
  begin
    if (temptexto[I] = '½') then
    begin
      texto[4] := Copy(temptexto, IDx + 1, I - IDx - 1);
      IDx := I;
      break;
    end;
  end;
Pronto, agora você já tem todos valores necessários; O texto[1] = DADO1; texto[2] = DADO2; Lembrando que se precisar passar mais parametros, copie esse codigo:
for I := IDx + 1 to Length(temptexto) do
  begin
    if (temptexto[I] = '½') then
    begin
      texto[5] := Copy(temptexto, IDx + 1, I - IDx - 1);
      IDx := I;
      break;
    end;
  end;

E cole abaixo dos outros no servidor, renomeando o texto[POEOPROXIMONUMEROAQUI]; Exemplo: Se o último for o texto[4], portanto você deverá renomear para texto[5] (DÃAAAAA. :S); E lembre-se de colocar mais um ½ no sendtext;

Ps. O seu SendText SEMPRE deverá terminar com um ½;

E agora, o melhor;

Seja feliz! :)

Edited by .lock
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652.1k
×
×
  • Create New...