GARANTIR DESCONTO

Fórum Pointer Record #319243

16/04/2006

0

Compoentes: IdTCPServer - IdTCPClient

Estou querendo enviar do cliente para o server um Pointer

Pointer:
TTeste = ^PTeste;
PTeste = record
Nome: String;
IP: String;
...
end;


Como faço para enviar o Pointer??

Criei ele
var
Teste: TTeste;
begin
New(Teste);
Teste.Nome:= ´dsdas´;
Teste.IP:= ´0.0.0.0´;
Comando do TCPClient para enviar para o TCPServer;
end;

Alguem pode me ajudar??


Rudá

Rudá

Responder

Posts

17/04/2006

Thomaz_prg

Bom, não usei estes componentes, mas usando ServerSocket e ClientSocket, bastava usar SendBuf( Ponteiro ).


Responder

Gostei + 0

17/04/2006

Paullsoftware

bem eu faço assim:
...
type

  PClient   = ^TClient;
  TClient   = record
    IP      : string[15];            { Ip da estação na rede }
    Nome    : String[40];            { Nome da Estação na rede }
    Aberto
...


e para enviar faço
procedure TfMain.EnviaMsg;
var
  Msg    : String;
  SelClient : PClient;
begin
...
     begin
      try
      SelClient := PClient(Clients.LockList.Items[lbClients.ItemIndex]);
      TIdPeerThread(SelClient.Thread).Connection.WriteLn(Msg);
      finally
      Clients.UnlockList;
      end;

será que é isso que vc quer? :wink:


Responder

Gostei + 0

17/04/2006

Rudá

Eu quero é enviar o ponteiro para o tcp cliente

Algo como write(ponteiro), usando o componente indy!


Responder

Gostei + 0

17/04/2006

Paullsoftware

não testei, mais pode ser que funcione
no TCPServerConnect(AThread: TIdPeerThread);
..
var
 Posicao : Pointer;
 NewClient : PClient;
begin
  GetMem(NewClient, SizeOf(TClient));
...
 NewClient.IP      := AThread.Connection.Socket.Binding.PeerIP;
 NewClient.Nome    := UpperCase(GStack.WSGetHostByAddr(NewClient.IP));
 Posicao := AThread;//Aqui pego o Pointer do cliente
para enviar tente usar WriteBuffer assim:
 AThread.Connection.WriteBuffer(AThread,sizeOf(NewClient)); 
 AThread.Data := TObject(NewClient);
....
 try
   Clients.LockList.Add(NewClient);
  finally
    Clients.UnlockList;
 end;
...



Responder

Gostei + 0

17/04/2006

Rudá

Eu queria fazer algo do tipo assim

var
Teste: PClient;
begin
New(Teste);
NewClient.IP:= AThread.Connection.Socket.Binding.PeerIP;
NewClient.Nome:= UpperCase(GStack.WSGetHostByAddr(NewClient.IP));
AThread.Connection.WriteBuffer(Teste,sizeOf(NewClient));

Mas não vai!


Responder

Gostei + 0

17/04/2006

Rudá

Não tem como transformar um pointer em Stream??
Como isso podemos enviar um stream!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar