можно ли приаппендить в начало большого файла инфу без предварительного резервирования скажем нулевых байт в начале этого большого файла? И что будет, если поставить FileSeek("режим отсчета с конца","на число байт большее чем длина файла")?
persicum На Delphi зависит от настроек компилятора. Но по умолчанию выдаст мессагу, что ошибочка вышла. А если io error checking выключена, то поставит ли в начало хз, но IOResult вернет ошибку.
persicum, FS не позволяет. Разве что по границе кластера, ручками. Ничего страшного не будет. Отсчитает от конца сколько сказано, упрётся в начало и встанет на нём.
Вряд ли "приаппендить" в начало что-то получится. Если формат файла не plain, а собственный, можно попробовать сделать из него нечно вроде двусвязного списка. Правда придется заморачиваться с собственными реализациями чтения/записи.
Если взять гипотетическую ResinFS, которая позволяет переместиться в минус и записать: где, по итогу, окажется указатель текущей позиции в файле? Я имею в виду некую дискретность размещения данных файла на физическом носителе.
То есть переместить указатель далеко в минус невозможно... И склеить два файла без копирования но с получением фрагментированного файла тоже невозможно. В принципе, мусор изза неполного выравнивания последнего кластера был бы не страшен...
persicum В общем случае решения нет т.к. системная ФС таких извращений не позволит, для своего формата файла прислушайся к совету KeSqueer, m$ word так делает, да и не только он. KeSqueer Достаточно сделать к ним и к seek надстройку, что собственно не сложно.
Только низкоуровневой работой с фс например сдвинуть начало файла назад на пару секторов и писать уже туда поидее может прокатить
punxer Во первых не секторов, а кластеров, а во вторых в начале или середине файла не может быть не полных кластеров... Ситуация же когда нужно добавить инфы ровно на целое число кластеров весьма экзотична, тем более, что размер кластера на разных дисках будет разным.