|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Создать record в Run-time
Доброго времени суток.
Решил я написать очередной велосипед - небольшую БД для себя. Встал вопрос - как хранить данные строки, притом что количество и тип полей заранее неизвестно? Можно ли в Run-time создавать record-ы, содержащие данные нужных типов? Заранее спасибо. |
#2
|
||||
|
||||
нет, в рантайме рекорд не сделать, да это и не нужно для этой задачи. Делается обычно вот что:
Сначала создается заголовок файла, где содержится описание количества полей в структуре. Далее идет описние каждого поля в отдельности. На основании этой информации вы можете уже узнать размерность записи и соответственно вычислить положение любой записи в БД. Эта схема примерно описывает классический DBF. Схема эта во многом удобна, но не будет работать, если у вас используются поля имеющие нефиксированный размер. В этом случае можно поступить так, под такие данные выделить другой файл, а в основном файле хранить только позицию и длину такого поля. Так в общем и реализовано хранение Memo в DBF Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
|||
|
|||
Забыл упомянуть, я хочу делать БД, которая бы полностью в памяти хранилась. С файлами было бы куда проще, естественно.
|
#4
|
||||
|
||||
Есть же SQLite.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#5
|
||||
|
||||
есть уже такой велосипед и очень не плохой - для хранения таблиц в памяти удобно использовать стандартный TClientDataSet:
Код:
ClientDataSet1.FieldDefs.Clear; ClientDataSet1.FieldDefs.Add('ID', ftInteger); ClientDataSet1.FieldDefs.Add('Name', ftString, 10); ClientDataSet1.CreateDataSet; Пишу программы за еду. __________________ |