//Es geht los mit:
stream2:=TMemorystream.Create;
stream2.LoadFromFile(edit1.text);
//Als nächstes wird mein Datentyp zusammengebaut:
function Packagebuilder(packagetype:TMEINPACKETTYP;stream2:TMemorystream;str:,additional:
string):TMEINPACKET;
pack.packagetype:=packagetype;
pack.data:=stream2;
//hier wird also der oben erzeugte stream2 in meinen Datentyp eingebaut
pack.additional:=additional;
pack.str:=str;
result:=pack;
end;
//Nun wollen wir den Datentyp per Indy verschicken und bauen dafür einen Stream der per Indy
//verschickt werden kann: (wir rufen also SendPackage mit dem Argument pack von oben auf)
procedure SendPackage(pack:TMEINPACKET;Host:
String);
var stream : TMemoryStream; inttype,len:integer;
begin
stream := TMemorystream.Create;
//Schreibt Typ des Packages in den Stream:
inttype:=packagetypetoint(pack.packagetype);
stream.
Write( inttype, SizeOf( inttype ) );
//Schreibt Inhalt der String Pointer in Filestream mit Längenangabe
len := Length( pack.str );
stream.
Write(len, SizeOf(len) );
stream.
Write( PChar(pack.str)^, len );
len := Length( pack.additional );
stream.
Write(len, SizeOf(len) );
stream.
Write( PChar(pack.additional)^, len );
//Schreibt Data Stream in den zu versendenden Stream
stream.Position:=stream.Size;
stream.CopyFrom(pack.data,0);
//Verschickt den Stream per Indy
sendstream(stream,Host);
end;