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

Ваш аккаунт

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

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

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

Добавление в файл таблицы и секции

27K
04 декабря 2008 года
Everhest
44 / / 20.07.2008
Доброе время суток, я прошу вас поделится опытом, допустим есть у меня файл, в котором есть заголовок определенного размера, следом идет таблица - не определенного размера, дальше идут секции содержащие в себе структуру определенного размера и текст с некоторой длинной прописанной в структуре, так вот я прошу у вас алгоритм оптимальной работы с этим типом файлов:

Код:
;==============================================================================
;       Формат книг (*.bk) заключается в наборе буферов для текста,
;              структуре заголовка и таблицы заголовков;
;==============================================================================

struct BOOK32_HEADER                    ; Заголовок:
        signature       db 'BKnew',0    ;  Подпись "BKnew",0
        password        dd 0            ;  Пароль
        preferred       dd 0            ;  привелегии
        count           dd 0            ;  Кол-во секций
ends

struct BOOK32_TABLE_ITEM                ; Таблица описания страниц:
        title           db 30 dup (0)   ;  Заголовок
        color           dd ?            ;  Цвет
        seek            dd ?            ;  Начало текста в файле книги
ends

struct BOOK32_SECTION                   ; Секция:
        preferred       dd ?            ;  Привелегии
        handle          dd ?            ;  Указатель блока памяти для древовидной структуры
        lengthof        dd ?            ;  Кол-во байтов в тексте
        buffer          dd ?            ;  Текст
ends


Есть возможность поменять структуры, если это приведет к упрощению работы... Заранее благодарю...
288
05 декабря 2008 года
nikitozz
1.2K / / 09.03.2007
Что вы понимаете под "оптимальным алгоритмом работы с этим файлом". Алгоритм чтения и записи в файл?
27K
05 декабря 2008 года
Everhest
44 / / 20.07.2008
В принципе меня интересует только запись в файл, вкратце для записи одной так сказать "страницы" мне надо сделать инкремент BOOK32_HEADER.count далее идет то, что меня больше всего интересует, для добавления еще одного элемента BOOK32_TABLE_ITEM мне наверно при открытии следует выделить память размером sizeof.BOOK32_TABLE_ITEM * BOOK32_HEADER.count и туда записать все элементы таблицы, дальше выделить еще один кусок памяти в размере [GetFileSize] - sizeof.BOOK32_TABLE_ITEM * BOOK32_HEADER.count - sizeof.BOOK32_HEADER и в этот буфер переместить все секции, а дальше работать только с памятью... Так вот я хотел спросить, есть более простые способы или не стоит выдумывать всякую ерундень?

Исходники на fasm и Delphi http://test.videouroki.tu2.ru/test.rar

Если не качается архив копируем ссылку и вставляем в браузер...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог