Запись данных в поток в конкретную позицию
Приветствую!
Это заметка о том, как можно вставить данные в поток в нужную позицию. Цель заметки: обратить внимание и обсудить. Суть: при записи в поток в указанную позицию запись осуществляется поверх уже существующих данных, и данные "затираются". Пример: Код:
Local output:TStream = WriteStream("data.txt") Однако данные затёрлись, остались только ИНТовые 4 байта. Решение: в нужные позиции последовательно записывать значения по умолчанию, например нули, а потом поверх "нулей" писать правильные значения. Пример: Код:
Local output:TStream = WriteStream("data.txt") Применение: мне потребовалось записать в начало файла количество символов в шрифте. Оно должно считаться автоматически. Описание шрифта в текстовом файле. Символы записаны блоками, а не в одну строку. При этом всё записать за 1 проход по файлу. Успешно сделано. П.С. файл с описанием шрифта, по которому формируется бинарник: Код:
10 |
Ответ: Запись данных в поток в конкретную позицию
Отличная работа КЭП!
|
Ответ: Запись данных в поток в конкретную позицию
вообще то это геморой.
для таких целей существует отражение. |
Часовой пояс GMT +4, время: 05:03. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot