Где сохранить простые данные?

Мне интересно, где лучшее место для сохранения простых нечувствительных данных? Как несколько 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, Они позволяют много вариантов, таких как поиск, сортировка, использование элементов управления базой данных и многое другое.

Другие вопросы по тегам