Puedes buscar por TStream, TMemoryStream y TFileStream por el foro o internet.
Viene a ser archivos binarios con la estructura y forma que necesites. La estructura no es fija, puedes cambiarla dinámicamente.
Código Delphi
[-]
var datos :TStream;
valor1:integer;
begin
datos := TMemoryStream.Create;
datos.Write(valor1, sizeof(integer));
if Valor1 = 1 then
datos.write(buffer, sizeof(buffer));
else
datos.write(buffer2, sizeof(buffer2));
datos.SaveTofile('c:\datos.dat');
datos.Free;
end;
Como ves, primero guardas el valor1 y después dependiendo del valor que contiene se graba en el archivo una cosa u otra.
Al tiempo de leer se deben interpretar los datos de la misma forma.
Si son clases que heredan de TPersistent, revisa también los métodos SaveToStream, TFiler y TReader. Ello permitiría guardar el objeto completo a disco (como hace delphi con el .dfm, por ejemplo).
Saludos