Хранение данных в разныхОС'ях
Модератор: Модераторы
Хранение данных в разныхОС'ях
Программируя под Win, зачастую хранил переменные в ini файле. В Lin существует аналог ini. Но хочется, чтобы код, отвечающий за взаимодействие в этим делом был полностью платфменнонезависимым (раз написать и не возвращаться больше).
Тут, наверное есть несколько вариантов :
1. XML- стрельба из пушки по воробьям.
2. SQLite- ИМХО, тоже несколько громоздко.
3. Какой-нибудь ещё вариант...
Хотелось бы знать, кто чем пользуется, кто что посоветует.
P. S. Если есть русская документация по SQLite- киньтесь, пожалуйста... Я не нашёл.
Тут, наверное есть несколько вариантов :
1. XML- стрельба из пушки по воробьям.
2. SQLite- ИМХО, тоже несколько громоздко.
3. Какой-нибудь ещё вариант...
Хотелось бы знать, кто чем пользуется, кто что посоветует.
P. S. Если есть русская документация по SQLite- киньтесь, пожалуйста... Я не нашёл.
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
- bw
- постоялец
- Сообщения: 359
- Зарегистрирован: 01.12.2005 10:36:23
- Откуда: Усть-Илимск
- Контактная информация:
Если тебе хватает ini, значит нечего выпендриваться и прикручивать xml и пр. А что касается места расположения фавйла, то тут есть несколько вариантов (как сказал alexs), какие и в какой комбинации использовать решать тебе:
Я бы необходимый файл искал именно в такой последовательности.
..bw
- Указывать путь насильно в параметрах запуска программы (аргументы).
- Прописать путь в переменной окружения.
- Смотреть в директории с программой (только не текущей, а именно в директории программы).
Я бы необходимый файл искал именно в такой последовательности.
..bw
- Иван Шихалев
- энтузиаст
- Сообщения: 1138
- Зарегистрирован: 15.05.2006 11:26:13
- Откуда: Екатеринбург
- Контактная информация:
- Иван Шихалев
- энтузиаст
- Сообщения: 1138
- Зарегистрирован: 15.05.2006 11:26:13
- Откуда: Екатеринбург
- Контактная информация:
Это почемуже? вообще нечего придумывать велосипед, есть определенный стандарт хранения информации. Это домашняя папка пользователя, как в винде так и в *nix. в винде там помойка, делай что хочеш, а в юниксах создается папка с именем программы, и впереди добавляется точка(что значит она будет скрытой). в этой папке делай что хочеш. Но лучше данные в какомто текстовом формате INI или XML или система "Аврора"(имя файла = имя параметра -> внутри , можно разбивать на поддиректории).bw писал(а):2.5 - домашний каталог пользователя (в винде Application Data)
Может очень быстро превратиться в помойку. Под виндой это наверное не так страшно, домашний каталог разбит на ряд директорий с четко определенной функцией, но у POSIX систем, мне так кажется, проблема стоит острее.
..bw
Все потому что если программу поставят правильно в /usr/bin то никто тебе туда непозволит никакие конфиги писать. стандарт четкий- общие настройки в /etc/имяпрограммы и конкретных пользователей в $HOME/.имяпрограммы
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
В линуксе стандарт де-факто - GetEnvironmentVariable('HOME'). В винде тоже есть переменные окружения APPDATA и USERPROFILE, но официально рекомендуемый способ - это функция ShGetFolderPath.
Кстати, в модуле SysUtils есть ф-ции для этих целей, но что именно они возвращают - я не разбирался.
-
rudjuk1977
- постоялец
- Сообщения: 104
- Зарегистрирован: 28.04.2007 21:18:56
- Откуда: Киев
- Контактная информация:
spv писал(а):Программируя под Win, зачастую хранил переменные в ini файле. В Lin существует аналог ini. Но хочется, чтобы код, отвечающий за взаимодействие в этим делом был полностью платфменнонезависимым (раз написать и не возвращаться больше).
Тут, наверное есть несколько вариантов :
1. XML- стрельба из пушки по воробьям.
2. SQLite- ИМХО, тоже несколько громоздко.
3. Какой-нибудь ещё вариант...
Хотелось бы знать, кто чем пользуется, кто что посоветует.
P. S. Если есть русская документация по SQLite- киньтесь, пожалуйста... Я не нашёл.
Хранить в xml довольно удобно. Гораздо удобней, чем хранить в ini или в базе данных, при этом, получаем текстовый формат, который элементарно может корректироваться пользователем.
В XML, в отличие от ini есть возможность применения вложенных данных. При этом, используя определённые библиотеки работа минимальная.
Почему xml удобен? Потому, что умеет сохранять информацию о классах. Т.е. можно не задумываться особо о выгрузке данных. Они сами выгружаются с помощью одной строки кода с Вашей стороны и загружаются.
В качестве примера, библиотека для работы с xml:
http://www.delphihome.com/xml/en/download.php3
- shade
- энтузиаст
- Сообщения: 879
- Зарегистрирован: 21.02.2006 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
Про xmlconf - здесь: http://www.freepascal.ru/forum/viewtopic.php?t=2158
Но сохранять классы он не умеет, до этого пока не дошли руки. Впрочем, сериализатор в xml есть в составе Lazarus. С другой стороны, для сохранения классов вполне годится и стандартный сериализатор.
Но сохранять классы он не умеет, до этого пока не дошли руки. Впрочем, сериализатор в xml есть в составе Lazarus. С другой стороны, для сохранения классов вполне годится и стандартный сериализатор.
Sergei I. Gorelkin писал(а):Если возможностей .ini хватает - почему нет? С использованием компонента типа TMemIniFile единственное, что остается зависеть от платформы - это путь к файлу.
в Lazarus-e ведь есть юнит INIFiles, а такую компоненту не видал вроде...
INI-файлы не удобно успользовать, когда количество строк в ней переваливает за сотню, тормоза появляются при записи или чтении...
- Sergei I. Gorelkin
- энтузиаст
- Сообщения: 1409
- Зарегистрирован: 24.07.2005 14:40:41
- Откуда: Зеленоград
