Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Добавить информацию по позиции в бинарный файл


Автор: Vaskevych 15.2.2012, 10:43
Всем привет вопрос следующий как добавить определенную информацию в файл без нарушения структуры.

Например:

user posted image

Запись идет через WriteBuffer ... вообщем используется стандартный TFileStream

Автор: northener 15.2.2012, 11:27
Считать файл в память, изменить считанный образ, записать измененный образ на диск.
Волшебных палочек для работы с файлами нет.

Автор: Vaskevych 15.2.2012, 11:55
Такой вариант не подходит, припустил файл в 150 Мб. и считывать все ето в память для изменения одного параметра ((((
Уж очень долго и много ресурсов надо а если ещё несколько обращений !!!! 

Может есть какие то иные варианты ????

Автор: Qu1nt 15.2.2012, 12:08
http://www.codeproject.com/Articles/17716/Insert-Text-into-Existing-Files-in-C-Without-Temp

Автор: northener 15.2.2012, 13:59
Цитата(Vaskevych @  15.2.2012,  11:55 Найти цитируемый пост)
Такой вариант не подходит, припустил файл в 150 Мб. и считывать все ето в память для изменения одного параметра ((((

Так нужно добавить или изменить?

Автор: Vaskevych 15.2.2012, 22:24
northener,  и добавить и изменить.

Автор: northener 15.2.2012, 22:50
Цитата(Vaskevych @  15.2.2012,  22:24 Найти цитируемый пост)
и добавить и изменить.

Изменить(т.е. когда размер файла не меняется) можно и без чтения. Рассчитать позицию, найти позицию в стриме функцией Seek и записать тем же WriteBuffer. А вот добавить совсем без чтения никак. Надо хотя бы прочитать ту часть файла, которая после добавления должна переместиться вниз на вашей схеме файла. Тогда можно добавить в нужную позицию то что надо добавить, а затем дописать ранее прочитанное.

Автор: Vaskevych 16.2.2012, 13:14
northener,  Спасибо за помочь думаю так и сделаю !!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)