Du solltest keine Shortstrings verwenden, da in diesen noch ein Längenbyte ist. Also, wie du selbst vorgeschlagen hast, besser ein array[0..15] of char nehmen. Wenn ich mit den Indys Records empfangen habe, habe ich das immer so gemacht: Erstmal TBytes empfangen. TBytes ist ein dynamisches Array, also ein Zeiger auf eine Byte-Folge. Das ganze habe ich in den Zeigertyp des Records gecastet und gerne auch mal mit with umschlossen, also so:
Delphi-Quellcode:
var rec: TMeinRecord; Bytes: TBytes;
begin
IdTCPClient1.ReadBytes(Bytes, SizeOf(TMeinRecord));
rec:=PMeinRecord(Bytes)^;
//oder auch
with PMeinRecord(Bytes)^ do
begin
end;
end;
Das ganze ist ungetestet, es kann sein, dass ich die Syntax nicht mehr ganz im Kopf habe.