Где сохранить простые данные?
Мне интересно, где лучшее место для сохранения простых нечувствительных данных? Как несколько URL-адресов и некоторые настройки.
Пожалуйста, порекомендуйте.
5 ответов
Все зависит от назначения этих настроек! Если вы хотите развернуть XCopy, я бы предложил файл XML рядом с exe. Но если вам также нужно написать об этом, вы должны найти подходящее место в профиле текущего пользователя или в профиле "все пользователи". Реестр (локальный компьютер или текущий пользователь) также будет хорошим вариантом для простых настроек.
Другой вопрос - это тип настроек, которые нужно хранить. Если это простые настройки, я обычно начинаю с XMLSpy от Altova, чтобы сгенерировать схему XML, определяющую структуру настроек. Затем я использую мастер импорта XML в Delphi, чтобы сгенерировать код из этой схемы и просто использовать этот сгенерированный код. Это позволяет мне легко изменять структуру, а также обеспечивает наличие какой-либо документации (схемы), рассказывающей другим о структуре. Поначалу это может показаться сложным, но как только вы к этому привыкнете, это прекрасно! Больше не нужно вручную редактировать настройки реестра или забывать о структуре ваших файлов INI. И больше не нужно думать о написании кода для чтения и записи этих настроек, поскольку Delphi сделает это за вас!
Реестр также будет хорошим местом для настроек, но не у каждого пользователя будут надлежащие права доступа для чтения или записи в реестр, что может привести к сбою вашего приложения. Кроме того, реестр имеет некоторые другие ограничения, что делает его неподходящим, если вам нужно хранить много настроек! Было бы хорошо сохранить строку подключения и, возможно, имя пользователя и зашифрованный пароль для некоторой учетной записи пользователя, но если вам нужно сохранить 40 или более настроек, реестр станет неподходящим.
То же самое относится и к файлам INI, размер которых обычно ограничен 64 килобайтами. Конечно, вы также можете сохранить эти настройки в обычном текстовом файле или просто в двоичном файле. Раньше я даже сохранял настройки внутри ZIP-файла, потому что мне нужно было хранить десятки настроек, связанных с сеткой. Таким образом, каждая сетка будет читать и записывать свои настройки в некоторый двоичный поток, который затем будет храниться в зашифрованном ZIP-файле.
Если это файл для каждого пользователя, вы должны сохранить его в профиле текущего пользователя. Например, в моей системе Windows 7 вы должны использовать
C:\Users\Andreas Rejbrand\AppData\Local\Your Company Name\Your Product Name\Version
такие как
C:\Users\Andreas Rejbrand\AppData\Local\Rejbrand\AlgoSim\2.0
Чтобы получить C:\Users\Andreas Rejbrand\AppData\Local path, вы используете SHGetSpecialFolderPath
функция.
Настройки и, в частности, пользовательские настройки могут храниться в реестре. Посмотрите на блок реестра и объект TRegistry.
Вот некоторый демонстрационный код, чтобы начать работу:
var
r:TRegistry
begin
r:=TRegistry.Create;
try
r.OpenKey('\Software\MyApplication',true);
r.WriteInteger('Setting1',Setting1);
r.WriteString('Setting2',Setting2);
finally
r.Free;
end;
end;
INI-файл или JSON-файл или XML-файл в зависимости от ваших потребностей для локального использования. БД для использования в сети.
Есть много опций, таких как XML (структурированное хранилище данных), INI-файлы (простые данные), базы данных или простые файлы.
Я пойду за XML's saved with ClientDatasets
, Они позволяют много вариантов, таких как поиск, сортировка, использование элементов управления базой данных и многое другое.