Also irgenwie lässt du dich bluffen; die Variable
bytes:TIdBytes
ist ein Zeiger, der 4 Bytes benötigt.
Es zeigt aber auf einen Speicherbereich der die Länge hat, die man zuvor mit SetLength reserviert hat.
SizeOf()
und
Length()
geben unterschiedliche Ergebnisse zurück!
Bevor du die Daten wegschickst wäre es sinnvoll sie in einer Datei zu speichern, die du dann mit einem Debugger anschauen kannst.
Delphi-Quellcode:
var
bytes : TIdBytes;
rconpacket : TRconPacket;
fs : TFileStream;
begin
...
SetLength(bytes, rconpacket.Size);
Move(rconpacket, bytes[0], rconpacket.Size);
// zum Debuggen die Daten in Datei schreiben
fs := TFileStream.Create('RCON_Out.dat', fmCreate);
fs.Writebuffer(bytes[0], Length(bytes));
fs.Free;
idTCPClient1.IOHandler.Write(bytes);