You need to have an untyped file if you want to save a record with dynamic content. The code would look something like this (untested):

[pascal]
procedure SaveRec(const P: TSinglePlayer);
var
len: Integer;
f: File;
begin
AssignFile(f, MY_FILE_NAME);
try
Rewrite(f, 1);
len := Length(P.Numbers);
BlockWrite(f, len, SizeOf(len));
BlockWrite(f, p.Numbers[0], SizeOf(P.Numbers[0]) * len);
len := Length(P.Name);
BlockWrite(f, len, SizeOf(len));
BlockWrite(f, P.Name[0], SizeOf(P.Name[0]) * len);
finally
CloseFile(f);
end;
end;
[/pascal]

I'll let you play around with the code on your own now since I'm to tired to write anymore.