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

Ваш аккаунт

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

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

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

Пример организации работы с файлом

40K
16 сентября 2008 года
*Denis
6 / / 16.09.2008
Хочу разобраться с тем, как организовать свою примитивную БД, но, конечно, БД это громко сказано, так, поделка :)
Например какой-нибудь справочник, содержащий разнородные записи, с уникальным идентификатором для каждой записи.

Собственно вопросов несколько:
1. Как сабж грамотно организовать, т.е. структуру файла?
2. Как грамотно реализовать с использованием WinAPI функций?

по 1 вопросу полагаю нужно записывать счётчик в заголовок файла чтобы при добавлении записи, присваивать ей уникальный идентификатор (считываем значение счётчика, увеличиваем на единицу, присваиваем идентификатору записи, перезаписываем в файле значение счётчика), сама запись (помимо данных) содержит размер всей записи, плюс размеры каждого поля записи (получаем через strlen, приводим к DWORD)

по 2 вопросу полагаю нужно размеры записей, а также значения счётчика как-то грамотно записывать-считывать? Т.е. если переменная буфера функций ReadFile, WriteFile имеет тип const void * то целочисленные значения длин записей (и счётчика) необходимо как-то преобразовать?

И вообще насколько я правильно представляю себе такой подход? Может такие вещи реализовываются как-то по другому?
Нигде не могу найти примеров кода подобной реализации (есть, конечно исходники серьёзных приложений СУБД, но мне до них как пешком до Китая, а что-то попроще, типа телефонный справочник или там, записная книжка...), если кто-нибудь приведёт пример или кинет ссылку буду весьма признателен.

P.S. Чуть не забыл: интересует пример для Borland C++ Builder, на Delphi почему-то примеры попадаются чаще (там файлы типизированные, может по-этому...)
14
16 сентября 2008 года
Phodopus
3.3K / / 19.06.2008
Цитата: *Denis
1. Как сабж грамотно организовать, т.е. структуру файла?


Вполне можно и так как ты пишешь. Только зачем тебе ID записей?

Цитата: *Denis
если переменная буфера функций ReadFile, WriteFile имеет тип const void * то целочисленные значения длин записей (и счётчика) необходимо как-то преобразовать?


Нет. Надо просто передать на них указатель (передать их адрес) и их размер - sizeof(). Это в отношении переменных счетчика и длины.
Можно в начале (а может в конце/середине) хранить табличку на начала каждой записи в файле. Это если потребуется ускорение поиска конкретной записи.

Есть такой интересный формат как XML. Хотя если хочешь двоичный, то может тебе оно и не надо..

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