NB: А можно ли использовать индексирование записей в файле? если да, то можно это сделать без использования всяких truncate и переписывания всего файла по первой вставки
А если нет, то примерно так делать надо..
Код
var f = file of ftype;
temp, ins:^array[1..1] of ftype;
fsize, spos, inssize, i: word;
begin
....
ins - вставляемые записи
inssize - к-во
inspos - номер записи начала вставки
....
fsize = filesize(f) div sizeof(ftype);
getmem(temp, (fsize-inspos+1)*sizeof(ftype))
seek(f, inspos-1);
for i:=1 to fsize-inspos do read(f, temp^[i]);
seek(f, spos-1);
truncate(f);
for i:=1 to inssize do write(f, ins^[i]);
for i:=1 to fsize-inspos do write(f, temp^[i]);
freemem(temp);
....
end;
подправьте где неправильно :p2: