It's simple. First of all, you're using fixed-size records, so that you can easily seek in your file. I'd suggest you using streams. So to write anything, you use:

[pascal]
type
TRecord = record
MyInteger: Integer;
MySingle: Single;
MyString: ShortString;
end;

procedure WriteFile;
var
FS: TFileStream;
Rec: TRecord;
begin
FS := TFileStream.Create('C:\myfile.dat', fmCreate);
try
Rec.MyInteger := 10;
Rec.MySingle := 3.14;
Rec.MyString := 'Simple string';

FS.Write(Rec, SizeOf(TRecord));
finally
FS.Free();
end;
end;
[/pascal]

Now, to modify a record:
[pascal]
procedure ModifyRecord(const ARecordIdx: Cardinal; const ARecord: TRecord);
var
FS; TFileStream;
begin
FS := TFileStream.Create('C:\myfile.dat', fmOpenReadWrite + fmShareExclusive);
try
FS.Seek(ARecordIdx * SizeOf(TRecord), soFromBeginning);
FS.Write(ARecord, SizeOf(TRecord));
finally
FS.Free();
end;
end;
[/pascal]

I hope it's clear now.