Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.09.21;
Скачать: CL | DM;

Вниз

Хранилище данных   Найти похожие ветки 

 
Пробежал...   (2008-07-28 11:15) [0]

Ядро программы должно предоставлять механизма для хранения / извлечения данных, чтобы модули программы могли им воспользоваться.

Вот думаю в каком формате предусмотреть функции? Что будут делать сторонние модули - черт их знает, какие данные им потребуется хранить - аналогично неизвестно.

То ли делать функции хранения по типу стандартных:

function SetParam(IdParam: string; Value: string)
function SetIntParam(IdParam: string; Value: integer)

function GetParam(IdParam: string; DefValue: string): string;....
...


ну и так далее. Или предусмотреть еще секции навроде INI-файлов?

function SetParam(IdSection, IdParam: string; Value: string)

Или сделать БД / SQL логику? Она сильно отличается...

У кого может был опыт, что лучше сделать? Какой интерфейс оптимальный для хранения данных, что предусмотреть нужно?

Модули ну как минимум настройки всякие свои будут хранить...


 
tesseract ©   (2008-07-28 11:20) [1]

Да любой, чем ini-файлы не устравивают ? Можно в sqlite хранить, если уж очень много настроек будет.


 
b z   (2008-07-28 11:21) [2]


> Вот думаю в каком формате предусмотреть функции?
Это как, простите? В формате С# :), не оно?

> То ли делать функции хранения по типу стандартных:
Где стандарт описан?


 
Anatoly Podgoretsky ©   (2008-07-28 11:28) [3]

> Пробежал...  (28.07.2008 11:15:00)  [0]

(ID: Integer; Value: Variant);
(ParamName: string; Value: Variant);
..
(ID: Integer): Variant;
(ParamName: string): Variant;


 
Johnmen ©   (2008-07-28 11:32) [4]

Что такое "интерфейс для хранения"?


 
Anatoly Podgoretsky ©   (2008-07-28 11:36) [5]

> Johnmen  (28.07.2008 11:32:04)  [4]

Итерфейс - это муждумордие, а если автор что то другое вкладывает в это, то пусть колется.


 
Медвежонок Пятачок ©   (2008-07-28 11:36) [6]

Вот думаю в каком формате предусмотреть функции?

А ты знаешь много форматов функций?


 
Пробежал...   (2008-07-28 11:41) [7]

>Да любой, чем ini-файлы не устравивают ? Можно в sqlite хранить, если уж
>очень много настроек будет

вопрос не в том, как это хранить движку программы. Вопрос в формате функций, предоставляемых модулям для хранения данных в некое абстрактное хранилище.

Формат функций надо сразу заранее сделать, и потом они не будут меняться (естественно, поэтому и не хочется ошибиться), модули понятие не имеют как физически хранятся данные, но интерфейс нужен.


 
Zeqfreed ©   (2008-07-28 11:54) [8]

Сохранить/Прочитать/Очистить.
Остальным должен заниматься сериализатор.


 
tesseract ©   (2008-07-28 11:58) [9]


> Остальным должен заниматься сериализатор.


За чем тут сериализатор ? Перегрузкой можно обойтись. Форматов то всего :
1. Число
2. Короткая строка
3. Длинная строка /текст
4. Бинарные данные


 
Zeqfreed ©   (2008-07-28 12:00) [10]

> tesseract ©   (28.07.08 11:58) [9]

Про форматы в посте автора я вообще ничего не вижу.


 
Медвежонок Пятачок ©   (2008-07-28 12:02) [11]

Вопрос в формате функций

Используй второй снизу, зеленый.


 
Skyle ©   (2008-07-28 13:00) [12]

Полюбому делай вот так.
function SetData(AData : Pointer; ADataSize : Cardinal) : Boolean;


 
Rouse_ ©   (2008-07-28 13:44) [13]

Когда мне нужно делать что-то подобное для хранения настроек различных классов, я реализую у каждого класса метод SaveToStream и LoadFromStream, а уж как ты будешь сами потоки данных хранить - дело десятое.


 
Ega23 ©   (2008-07-28 13:48) [14]


> а уж как ты будешь сами потоки данных хранить - дело десятое.


В ini-файлах!   :)


 
Eraser ©   (2008-07-28 13:53) [15]

обычно делаю как в [3] либо можно еще реализовать специальный класс, у которого свойство = настройка, унаследовать его от TComponent и сериализовать с пом. Read/WriteComponent.


 
Eraser ©   (2008-07-28 13:55) [16]

> [14] Ega23 ©   (28.07.08 13:48)

угу, в TMemIniFile, в потом его сохранять в поток и записывать в реестр или xml ;-)


 
Пробежал...   (2008-07-28 15:22) [17]


> Когда мне нужно делать что-то подобное для хранения настроек
> различных классов, я реализую у каждого класса метод SaveToStream
> и LoadFromStream, а уж как ты будешь сами потоки данных
> хранить - дело десятое.


проблема в том, что модули являются внешними DLL и написаны могут быть на любом языке соответственно.


 
Медвежонок Пятачок ©   (2008-07-28 15:33) [18]

и чего?
внутри dll классы + методы лоадфром сэйвту, снаружи функции сэйв/лоад


 
tesseract ©   (2008-07-28 16:24) [19]


> внутри dll классы


Создавать классы на чтение больших объёмов.... Это изврат, хотя от задачи зависит. Лучше COM - запустил и спокоен.


 
Медвежонок Пятачок ©   (2008-07-28 16:31) [20]

старая песня про пушку и воробьев.
для малы объемов - лишнее, а для больших - тормоза.
:)


 
blackman ©   (2008-07-28 16:58) [21]

для хранения / извлечения данных, чтобы модули программы могли им воспользоваться
Это не постановка задачи, а бред. А если им Энциклопедия понадобится или полный список жителей планеты? Конкретней надо и тщательнее! :-)


 
VirEx ©   (2008-07-28 18:00) [22]

write
read
seek
...


 
iZEN ©   (2008-07-29 00:17) [23]

Визируй Java Persistence API
http://voituk.kiev.ua/2008/01/30/introduction-to-java-persistence-api/



Страницы: 1 вся ветка

Текущий архив: 2008.09.21;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.01 c
15-1217225599
TUserClass
2008-07-28 10:13
2008.09.21
Скопировать таблицу (без данных) в FB.


2-1218188554
начинающий
2008-08-08 13:42
2008.09.21
Связи


15-1217595436
stas
2008-08-01 16:57
2008.09.21
Вопрос знатокам C#


11-1193561717
files32
2007-10-28 11:55
2008.09.21
Русский язык KOL+Lazarus+WinCE


2-1218196607
TUserClass
2008-08-08 15:56
2008.09.21
Вытащить текст из "чужого" RichEdit а