| 
| 
 | Вопрос # 941/ вопрос открыт / | 
 |  Доброе утро!))), коллеги!
 Вопрос: каким образом хранить на диске данные(в каком виде)?!
 нехочу в СУБД пихать... хотя это самый простой способ)
 ////////////////////////////////////////////////////////////////////
 
 Описание программы:
 1. Это скриптовый движок.
 2. Сейчас данные хранятся на диске в виде текста (строки)
 3. Движок обрабатывает двумерный массив {10*10} этих данных. Идет подкачка данных (по необходимости) из
 файлов.
 4. Данные бывают:
 - команды:
 - простые (одна команда, +, -, ...)
 - сложные (наборы команд или процедура(функция))
 - хранилище:
 - текстовые
 - числовые
 - связующие (для связи нескольких данных), необходимо чтоб загрузить в скриптовый движок все данные используемые задачей.
 ///////////////////////////////////////////////////////////////////////
 
|  |   Вопрос задал: Грег Леонов (статус: 1-ый класс)Вопрос отправлен: 26 сентября 2007, 23:16
 Состояние вопроса: открыт, ответов: 2.
 |  Ответ #1. Отвечает эксперт: Feniks Здравствуйте, Грег Леонов!В вопросе №939 подымалась похожая тема. Отвечу и Вам.
 Может стоит подумать в сторону формата XML. Он хорошо рекламируется, имеет стандартизация и широко применяется, например в Офисе, особенно в 2007. И имеется в открытом виде RFC по описанию этих файлов. Такие файлы структурированы, есть средства стандартные по работе с ними. А так же, в них можно и любые файлы запихивать. Один только минус - файл текстовый и сильно раздуется в размере, но приэтом, его можно сжимать.
 
|  | Ответ отправил: Feniks (статус: Бакалавр)Время отправки: 27 сентября 2007, 10:05
 Оценка за ответ: 4
 Комментарий к оценке: Спасибо за ответ, Feniks!
 только я никогда не работал с XML и даже с трудом себе его представляю... извини.
 
 Совет имеет место и даже очень!
 только не в моем случае.
 
 Оценка 4!
 
 С уважением, Грег Леонов.
 |  Ответ #2. Отвечает эксперт: Вадим К Здравствуйте, Грег Леонов!Когда то я решал подобную задачку. и пришёл к следующему решению. создаём систему классов, вложенных друг в дружку. каждый класс имеет метод записи/сохранения в поток вида
 SavetoStream(st:TStream)
 благодаря этому, можно сохраняться как и на диск, так и в память, так и в базу (БЛОБ поле)
 Типичный код сохранения выглядит так
 const KeyInt = 10; //уникальное для данного класса число
 st.write(KeyInt,4);
 st.write(KeyInt,Size);
 st.Write(....); а тут сам объект сохраняется, размер его мы указали выше. многие классы умеют это делать самостоятельно, например TStringList, TBitmap.
 KeyInt нужен для самоконтроля. процедура чтения сравнивает его с своим, и если не совпадает - бъет тревогу или, как вариант, возмножно решаться, какая именно будет запущена процедура чтения. если объект с таким номером неизвестен, то можно пропустить его (размер то мы знаем).
 после этих трёх строк в цикле или как там получается, вызываем процедуру сохранения всех вложенных объектов, те, в своих будут дальше рекурсивно обрабатывать.
 метод даёт хорошую производительность и гибкость.
 
|  | Ответ отправил: Вадим К (статус: Академик)Время отправки: 27 сентября 2007, 12:23
 Оценка за ответ: 5
 Комментарий к оценке: Спасибо за ответ, мне он понравился, т.е. я его почти понял)Так и сделаю, создам классы, только в потоках я не силен.
 |  
 Мини-форум вопросаВсего сообщений: 3; последнее сообщение — 27 сентября 2007, 21:21; участников в обсуждении: 1. 
|   | Грег Леонов (статус: 1-ый класс), 26 сентября 2007, 23:20 [#1]:Сорри, забыл добавить, что необходимо также хранить картинку, звук, видео. 
 Программа исключительно частного характера по моей инициативе.
 Исследование небольшое провожу)
 |  
|   | Грег Леонов (статус: 1-ый класс), 27 сентября 2007, 21:15 [#2]:SavetoStream(st:TStream) const KeyInt = 10; //уникальное для данного класса число
 st.write(KeyInt,4); - 4 это как я понял размер в байтах
 st.write(KeyInt,Size); - Size это размер объекта
 st.Write(....); - тут сохраняем объект
 
 почти все ясно)
 никогда не работал с потоками, но изучу обязательно, данный совет очень понравился.
 
 Твердая 5-ка !!!
 |  
|   | Грег Леонов (статус: 1-ый класс), 27 сентября 2007, 21:21 [#3]:С XML не дружу, хоть он и распространен. Считаю что мелкософт пудрит мозги со своими бесчисленными форматами. 
 Еще раз благодарю Feniks за совет.
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |