Збереження налаштувань - статті

Отримання спеціальних каталогів, використовуючи Delphi

Коли ваше Delphi-додаток потребує того, щоб зберегти деяку інформацію на жорсткий диск користувача, Ви повинні бути обережні, і повинні розділяти збереження призначених для користувача даних, налаштувань для користувача і налаштувань для комп'ютера.

Наприклад, в Windows для збереження специфічних для додатка файлів, таких як INI-файли, файли стану програми, тимчасові файли і т.п. повинен бути використаний каталог "Application Data".

Вкрай небажано використовувати жорстко прописані шляхи на кшталт "C: \ Program Files". При збереженні файлів в цьому каталозі, додаток навряд чи буде коректно працювати в інших версіях Windows, тому що цей шлях може бути змінений в наступних версіях Windows, або користувач може встановити ОС на інший диск. До того ж, Windows Vista може не дати доступ до багатьох каталогах. Навіть користувачеві з правами адміністратора.

WinAPI-функція SHGetFolderPath

Функція SHGetFolderPath визначена в модулі SHFolder. SHGetFolderPath повертає повний шлях до зазначеного спеціального каталогу за його ідентифікатором.

Нижче приведена функція-обгортка для SHGetFolderPath, щоб було простіше отримати стандартні каталоги (для всіх користувачів або тільки для поточного користувача).

Тепер створимо додаток для використання функції SHGetFolderPath:

Збереження налаштувань - статті

  • Покладемо на форму TRadioGroup ( "RadioGroup1");
  • Покладемо на форму TLabel ( "Label1")
  • Додамо п'ять елементів в RadioGroup (властивість Items):
    1. "[Поточний користувач] \ My Documents"
    2. "All Users \ Application Data"
    3. "[User Specific] \ Application Data"
    4. "Program Files"
    5. "All Users \ Documents"
  • Додамо обробник події OnClick для RadioGroup.

Примітка: "[Поточний користувач]" - це ім'я користувача, сеанс якого в даний момент активний в Windows.

Функція SHGetFolderPath є більш розширеним варіантом функції SHGetSpecialFolderPath.

Програма не повинна зберігати свою інформацію (тимчасові файли, призначені для користувача настройки, файли конфігурації програми, і т.д.) в каталозі My Documents (Мої документи), або в каталозі самого додатка (тобто в одному з підкаталогів Program Files). Слід використовувати спеціальний каталог в Application Data, відведений саме для Вашого застосування. Як правило, його ім'я збігається з ім'ям каталогу програми в Program Files).

Завжди створюйте підкаталог тільки в тих шляхах, які повертає функція SHGetFolderPath! Як правило, каталог створюється такий: "\ Application Data \ Назва компанії \ Назва продукту \ Версія продукту".

Приклад програми з використанням функції, описаної в статті, можна завантажити тут.

Для вставки посилання на цю статтю на іншому сайті використовуйте наступний HTML-код:

Схожі статті