Thema: Delphi stream in lan via indies

Einzelnen Beitrag anzeigen

Beckman

Registriert seit: 12. Jul 2004
205 Beiträge
 
#1

stream in lan via indies

  Alt 28. Nov 2004, 18:06
Delphi-Quellcode:
type
  TDatensatz = record
    Nachname: String[30];
    Vorname: String[30];
    Lehrer: String[30];
    Klasse: String[3];
    Bemerkung: String[105];
  end;
 
var
  Form1: TForm1;
  Daten: Tdatensatz;



clientseite. daten werden gesendet:


Delphi-Quellcode:
var
  stream: TMemorystream;


Delphi-Quellcode:
with IdTCPClient1 do begin
  stream := TMemorystream.Create;
  stream.WriteBuffer(daten, sizeof(TDatensatz));
  Connect; //und Verbindung herstellen
  try
    OpenWriteBuffer; //stellt sicher, dass alle Daten versendet werden
    try
      writestream(stream, true, true, 0); {das 2. true ist wichtig!, da es bewirkt, dass die Größe des Streams mittels WriteInteger zuerst verschickt wird} 
      CloseWriteBuffer;
      except
        CancelWriteBuffer;
        raise;
      end;
    finally
      Disconnect;
      stream.Free;
    end;
  end;
der record of strings soll via memorystream ueber tcp geschickt werden.





serverseite...
der memorystream soll empfangen werden und in gleiches record-of-strings-shema eingefuegt werden...


Delphi-Quellcode:
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var
  stream: TmemoryStream;
  size: integer;
begin
  stream := tmemorystream.Create;
  with AThread.Connection do
    try
      size := ReadInteger; //Größe des Streams empfangen
      ReadStream(stream, size); //und übergeben
    finally
      Disconnect;
    end;
 
stream.Read(Daten, sizeof(Tdatensatz));
 
memo1.Lines.Add(daten.Nachname);
memo1.Lines.Add(daten.Vorname);
memo1.Lines.Add(daten.Lehrer);
memo1.Lines.Add(daten.Klasse);
memo1.Lines.Add(daten.Bemerkung);
 
stream.Free;
end;




im memofeld entstehen jedoch nur leerzeilen


:/


weiss einer rat?
  Mit Zitat antworten Zitat