Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi stream in lan via indies (https://www.delphipraxis.net/34802-stream-lan-via-indies.html)

Beckman 28. Nov 2004 17:06


stream in lan via indies
 
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?

Beckman 28. Nov 2004 17:20

Re: stream in lan via indies
 
k, entschuldigt den thread, ichi habs grad rausbekommen.


stream.Seek(0,soFromBeginning);
stream.Read(Daten, sizeof(Tdatensatz));


die zeile reingegeben, und es funkt :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz