Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вставка байтов в файл

1.9K
14 мая 2007 года
AxXxB
229 / / 21.11.2006
Вот у меня тут такая проблема: надо вставить в файл через каждые 8 байт 0xFF, не заменяя имеющийся на этом месте. Т. е. если исходный файл такой:
 
Код:
01 02 03 04 | 05 06 07 08 | 09 0A 0B 0C | 0D 0E 0F 10

, то должен стать таким:
 
Код:
FF 01 02 03 | 04 05 06 07 | 08 FF 09 0A | 0B 0C 0D 0E | 0F 10

Пробовал читать исходный файл в массив байтов, а потом побайтово писать, но это очень долго. Читает он сразу и быстро (Get 1, ,TheBytes()), а пишет долго. Потом пробовал читать в двойной массив TheBytes (8, -int(-lof(1)/8)) и попытаться писать по 8 байт. Читает правильно, а попытку Put 2, ,TheBytes(,i) (i - переменная цикла) он пресекает: Синтаксис нарушен (оно и понятно). Что делать?
459
14 мая 2007 года
gacol
273 / / 12.02.2003
может такой вариант
1 - FSO.Get читаешь в текстовую переменную сразу много байт (я читаю до 1Мб, а ты с учетом вставки например 800 Кб)
2 - вставляешь что надо куда надо в эту большую переменную
3 - FSO.Put пишешь эту большую переменную

Я для работы с большими файлами быстрее спосода не нашел, хотя коряво.
1.9K
14 мая 2007 года
AxXxB
229 / / 21.11.2006
Спасибо за помощь! Правда, получилось так, что выполняется такой код еще дольше, чем побайтовая запись :).

Мне вот интересно, как записать за один раз 8 байт из массива?
459
15 мая 2007 года
gacol
273 / / 12.02.2003
Да, в моем варианте с мегабайтной переменной чтение-запись намного быстрее, а вот вставка страшно тормозит.
Я тут попробовал(см.файл), наверное, тебе подойдет 3-й вариант с 8-ми байтовой текстовой переменной, это в несколько раз быстрее побайтной обработки.
1.9K
15 мая 2007 года
AxXxB
229 / / 21.11.2006
Огромное спасибо!

Мда, возник тут вопрос: как узнать длину файла в таком случае?

Усе, решил. Спасибо еще раз!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог