SizeOf(rec) ergibt 8, da ChatChannels nur ein Pointer auf das Array ist. Ihr übertragt somit also nur diesen Pointer, aber nicht den Inhalt des Arrays.
Delphi-Quellcode:
type
TChatChannel = string[20];
TDatenPack = record
ChatChannels: array of TChatChannel;
Index2: Integer;
end;
procedure SaveDatenPackToStream(Pack: TDatenPack; AStream: TStream);
begin
AStream.Write(Pack.Index2, SizeOf(Integer));
AStream.Write(Pack.ChatChannels[0], SizeOf(TChatChannel) * Pack.Index2);
end;
procedure LoadDatenPackFromStream(AStream: TStream): TDatenPack;
begin
AStream.Read(Result.Index2, SizeOf(Integer));
SetLength(Result.ChatChannels, Result.Index2);
AStream.Read(Result.ChatChannels[0], SizeOf(TChatChannel) * Result.Index2);
end;
MfG,
Tryer