В целом, вероятно, проще всего следовать предложению VilleK и использовать то, что предоставляет Tpersistent.
Однако я почему-то предпочитаю этот метод, поэтому я полностью контролирую структуру файла.
type
TFileStruct=packed record
fSmallArr: TRec;
fCompCount: UINT32; // be explicit.. who knows what 64bit Delphi does to your integers...
fBigName: String[250]; // AnsiChar
end;
procedure TBigComponent.Save(FileName: string);
var
F:File of TFileStruct;
FileStruct:TFileStruct;
begin
FileStruct.fSmallArr := fSmallArr;
FileStruct.fCompCount := fCompCount;
FileStruct.fBigName := fBigName;
AssignFile(F,FileName);
Rewrite(F);
Write(F,FileStruct);
CloseFile(F);
end;
Имейте в виду, что String [xxx] выглядит как AnsiString, поэтому если вы используете Delphi 2009, ваши строки Unicode будут заменены на AnsiStrings при сохранении. По крайней мере, файлы будут обмениваться с программным обеспечением, скомпилированным с более старыми версиями Delphi.
В TSmall я бы изменил целое число для Age на Byte, чтобы у вас не было проблем с 64-битным Delphi.
«8 битов должно хватить каждому» (с) 2009 Wouter: -)