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?