К сожалению, такое напрямую не сделать - внедрять объекты в файл прямого доступа сложно, максимум содержимое StringList можно сохранить в текстовый файл его же методами. Конечно, помудрив немного записать всё же получится, но как потом обратно считывать, когда не известны изначально размеры полей получившейся записи? Вариант решения - преобразовать их под более типизированный вид, напр.
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 | TTest = record
TVopros: array [ 0..99 ] of String [ 255 ];
TVopr1 : array [ 0..99 ] of String [ 255 ];
TVopr2 : array [ 0..99 ] of String [ 255 ];
TVopr3 : array [ 0..99 ] of String [ 255 ];
TVopr4 : array [ 0..99 ] of String [ 255 ];
TVopr5 : array [ 0..99 ] of String [ 255 ];
TVopr6 : array [ 0..99 ] of String [ 255 ];
...
TFileTest = record ...
...
|
т.е так точно понятно сколько занимает байт, и на какой позиции распологается поле записи в ФПД.
Ну а дальше
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | var
f: file of TFileTest;
r:TFileTest;
begin
AssignFile(f, 'Имя файла' );
if FileExists( 'Имя файла' ) then Reset(f) else ReWrite(f);
Seek(f, 10 );
Read(f,r);
Seek(f, 20 );
Write (f,r);
Closefile(f);
end ;
|
Не экономично, зато надёжно.
При записи можно пустые строки забивать спецсимволами, а при считывании их игнорировать