Як встановити файл ini. Що таке INI-файли і для чого вони потрібні

Для Haskell. Потім вирішив, що краще розбити статтю на 3 частини. У першій частині я розповім, як написати контекстно-вільну граматику для опису вмісту ini-файлу.

ini файли

Файли з розширенням ini широко поширені у світі Windows, а й у інших системах (наприклад, php.ini). Формат ini-файлу дуже простий: файл розділений на секції, у кожній секції може бути довільне число записів виду "параметр = значення". Імена параметрів у різних секціях можуть збігатися.
[секція_1]
параметр1 = значення1
параметр2 = значення2

[секція_2]
параметр1 = значення1
параметр2 = значення2

Кожен параметр може бути адресований через ім'я секції та ім'я параметра: щось на зразок "секція_1". "параметр2" .

У ini-файлах передбачені коментарі - рядки, що починаються з ";".

Будуємо граматику

Давайте спробуємо описати цей формат у вигляді контекстно вільної граматики в розширеній нотації Бекуса-Наура (сподіваюся, що буде зрозуміло навіть тим, хто не знайомий з нею).

Опишемо що являє собою ini файл. Для цього опишемо всі конструкції від найскладніших (власне сам ini-файл) до найпростіших (що таке ідентифікатор). Кожній такій конструкції зіставляється спеціальне позначення ( нетермінал), яке визначається через інші нетермінали та звичайні символи (термінали), які я буду
ставити в лапках.

  • Дані ini-файлу (inidata) містять кілька секцій (фігурні дужки означають повторення будь-яку кількість разів).
    inidata=(section).
  • Секція складається з назви секції, укладеної у квадратні дужки, за якою з наступного рядка йде кілька записів (параметрів).
    section = "[", ident, "]", "\n", (entry) .
  • Запис складається з імені параметра, знака "=", значення параметра та закінчується кінцем рядка.
    entry = ident, "=", value, "\n".
  • Визначимо, що таке ідентифікатор: все що складається з букв, цифр або знаків "_.,:()()-#@&*|" (Насправді можуть зустрічатися й інші символи).
    ident = (letter | digit | "_" | "." | "," | ":" | "(" | ")" | "(" | ")" | "-" | "#" | "@" |"&" |"*" | "|")).

    Це визначення зовсім правильне, т.к. ідентифікатор повинен складатися хоч би з одного символу. Переробимо так:

  • Тепер визначимо, що є значенням: все крім кінця рядка (для стислості довелося розширити нотацію позначення not)
    value = (not "\n") .
Залишилося врахувати, що деякі парсери/люди люблять ставити додаткові прогалини та порожні рядки.
Для цього нам потрібно ввести ще два нетермінали: пробілові символи, що використовуються в рядку і просто пробільні символи.

Прогалини можуть бути майже будь-де. Тому трішки підкоригуємо граматику:
inidata = spaces, (section) .
section = "[", ident, "]", stringSpaces, "\n", (entry) .
entry = ident, stringSpaces, "=", stringSpaces, value, "\n", spaces .
ident = identChar, (identChar).
identChar = letter | digit | "_" | "." | "," | ":" | "(" | ")" | "(" | ")" | "-" | "#" | "@" | "&" |"*" | "|" .
value = (not "\n") .
stringSpaces = (" " | "\t") .
spaces = (" " | "\t" | "\n" | "r") .

Ось загалом і все, що стосується граматики =).

Хтось, мабуть, помітив, що я нічого не сказав про коментарі. Я не забув - просто їх простіше «ручками» вирізати =) (як вправу можете підправити граматику так, щоб вона враховувала коментарі).

Важливо:я трохи схитрував і збудував граматику так, щоб у ній не було лівої рекурсії. Обидві бібліотеки, що розглядаються мною, будують

Дуже часто, особливо у великих проектах, необхідно зберегти деякі налаштування програми, щоб потім їх застосувати при повторному завантаженні. Уявіть таку ситуацію – ви написали програму для клієнта. Він її запустив, і вона з'явилася у центрі вікна, як ви й планували. Однак йому здалося це незручним, і він зрушив її убік і зменшив розміри вікна, щоб паралельно працювати ще з якимось додатком. Все чудово, програма робить свою справу та користувач задоволений. Однак, коли наступного дня він знову завантажить цю програму, вона знову опиниться в центрі екрана, і матиме початкові розміри. Користувачеві знову доведеться зрушувати її убік та зменшувати розміри форми. Дрібниця? Однак з таких дрібниць і складається думка про програміста, і якщо думка це буде поганою, замовників у вас не буде! Програміст повинен передбачити у своїй програмі всі вимоги та бажання користувача, навіть такі, про які він і сам ще не здогадується. Ну скажіть, як користувач, який замовив вам програму, може знати, що форма при програмуванні може займати різне положення - по центру екрана або робочого столу, або положення при розробці? Поки він не зіткнеться з вашою програмою на практиці, йому й на думку не спаде вказати вам, що програма має запам'ятовувати свої налаштування!

У найпростішому випадку потрібно зберегти лише 5 параметрів – стан вікна (згорнутий, розгорнутий), його положення від лівої та верхньої межі робочого столу, його ширину та висоту. А якщо ви створюватимете більш складну програму, з панеллю налаштувань, де є купа чекбоксів та радіокнопок? Там користувач може змінити ваші налаштування "за замовчуванням" і поставити власні. Уявіть, якщо користувач витратив півгодини на те, щоб налаштувати вашу програму під себе, а при повторному запуску виявив, що всі його налаштування не збереглися!

Для збереження настройок користувача існує два способи - ini-файли і системний реєстр Windows. Кожен із цих способів має свої плюси та мінуси.

Якщо ви зберігаєте налаштування в реєстрі Windows, то вони приховані від користувача, отже, він нічого не зможе в них зіпсувати. З іншого боку, якщо на комп'ютері зареєстровано кілька користувачів, кожен зможе змінити налаштування програми "під себе". Мінус у тому, що якщо Windows буде перевстановлена, доведеться встановлювати заново і програму, оскільки вона буде відсутня в реєстрі.

Якщо ви зберігаєте налаштування в ini-файл, програма збереже налаштування і при повторній установці операційної системи. Крім того, збереження налаштувань в файлі ini реалізувати простіше. У цій лекції ми навчимося працювати лише з ini-файлами.

INI – файли мають багато переваг. З ними працювати просто і зручно, вони підтримують три типи даних – String, Integer та Boolean. Крім того, якщо б ми зберігали налаштування в простий текстовий файл, то при зміні однієї з налаштувань потрібно перезаписувати весь файл, а ini-файл дозволяє перезаписати тільки цей параметр.

Звичайно, є деякі правила використання такого роду файлів.

Насамперед, якщо ви збираєтеся працювати з ini-файлами, в секцію uses, відразу під словом interface, потрібно додати модуль inifiles, в ньому описані всі дані для роботи з ini-файлами. Додати модуль просто – після останнього вказаного у списку модуля стоїть крапка з комою. Замініть її на кому, додайте слово inifiles, а потім поставте крапку з комою.

Далі. За замовчуванням, файли ini створюються в директорії, де встановлено Windows. Там з'являється файл із розширенням *.ini та вашими налаштуваннями. Це не завжди зручно, особливо якщо припустити, що Windows може бути перевстановлений. Набагато краще створювати файл у тій директорії, де встановлена ​​програма. А як дізнатися про цю директорію?

ExtractFilePath(Application.ExeName)

Вивчимо створення ini-файлу на практиці. Створіть нову програму. У розділі uses додайте модуль inifiles.

Насамперед, пропишемо збереження параметрів при закритті програми. Для цього створіть обробник події OnDestroy для форми. Така подія трапляється при руйнуванні об'єкта форма, тобто при завершенні роботи з програмою. Створіть розділ var та пропишіть там змінну типу ini-файл:

Зверніть увагу, що ми створюємо файл у тій же директорії, звідки запущено програму. Якби ми вказали просто

ini:= TInifile.Create("my.ini");

то файл був би створений у директорії Windows! Далі збережемо позицію вікна, тобто властивості Left та Top форми:

//зберігаємо позицію вікна:

ini.WriteInteger("Position", "L", Form1.Left);

ini.WriteInteger("Position", "T", Form1.Top);

ini-файл має три процедури для запису даних різних типів. WriteInteger, WriteString та WriteBool. Відповідно, ці функції записують ціле число, рядок та логічний тип. Ці функції мають по 3 параметри. Перший – це розділ ini – файлу. У самому файлі він виходить у квадратних дужках. Розділ можна назвати як завгодно, не обов'язково Position. Другим параметром є назва параметра, що зберігається, у прикладі цей параметр ми вказали у вигляді букв "L" і "T", хоча можна було б написати і "Left", "Top" або якось інакше.

Третім параметром функції його значення. Оскільки властивості Left та Top форми мають значення у вигляді цілого числа, ми використовуємо функцію для запису цілих чисел WriteInteger. В результаті наведеного прикладу в ini - файлі з'явиться напис, подібний до цієї:

//зберігаємо розміри вікна:

ini.WriteInteger("Size", "W", Form1.Width);

ini.WriteInteger("Size", "H", Form1.Height);

Після того, як ми зберегли параметри в файлі ini, його необхідно закрити:

//закриваємо файл:

ini.Free;

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

Проте ми зробили лише половину справи. Налаштування ми зберегли, а як їх прочитати? Робиться все це так само, тільки навпаки. Замість властивості руйнування форми використовуємо властивість її створення (onCreate), замість запису використовуємо читання, і замість того, щоб значення властивостей форми записувати у файл, ми читатимемо їх з файлу і привласнюємо ці значення властивостям форм. Відповідно, ми маємо три процедури зчитування параметрів із ini-файлу: ReadInteger, ReadString та ReadBool.

Отже, робимо обробник подій для форми onCreate:

(при створенні форми)

procedure TForm1.FormCreate(Sender: TObject);

ini: TIniFile; //оголошуємо змінну типу inifile

//Тепер створюємо її:

ini:= TInifile.Create(ExtractFilePath(Application.ExeName)+"my.ini");

//застосовуємо позицію вікна:

Form1.Left:=ini.ReadInteger("Position", "L", 329);

Form1.Top:=ini.ReadInteger("Position", "T", 261);

//читаємо розміри вікна:

Form1.Width:=ini.ReadInteger("Size", "W", 384);

Form1.Height:= ini.ReadInteger("Size", "H", 312);

//закриваємо файл:

ini.Free;

Тут цікавий третій параметр функцій запису. Здавалося б, значення нам не потрібні, ми беремо їх із зазначених розділів. Але третій параметр є обов'язковим, у ньому вказується значення "за замовчуванням".

При створенні форми додайте їй відповідний розмір та положення та подивіться значення властивостей Left, Top, Width та Height. Ці значення ви і запишете як прийняті за замовчуванням. Якщо файлу ще не було або сталася якась помилка при читанні даного параметра, наприклад, не знайдено потрібний рядок, буде застосовано значення за замовчуванням. Якщо ж потрібний рядок прочитано, то застосовуватиметься значення, яке вказано в ньому.

Збережіть проект, відкомпілюйте його та подивіться, як працює програма. Отриманий ini-файл міститиме такий текст:

Спробуйте перед запуском програми змінити будь-який параметр, наприклад, вкажіть

Потім запустіть програму і подивіться, як зміниться положення вікна! До речі, це добрий спосіб ховати програму. Якщо ви для властивості Left вкажіть більше, ніж має властивість Width (ширина вікна), і при цьому зробите число негативним, вікно програми ніби зрушить ліворуч за межі екрана. Програма запущена, її видно в системному рядку, а вікна і немає!

Посуньте вікно робочої програми та вийдіть із неї. Знову запустіть – становище вікна, яке було останнім, збереглося!

Давайте продовжимо програму та створимо рядковий параметр. Встановіть на форму компонент Label, як Caption якого напишіть: "Введіть новий заголовок вікна". Нижче встановіть компонент Edit, користувач вводитиме текст. Ще нижче – кнопку з написом "Застосувати".

Видаліть текст із компонента Edit, в обробнику кнопки напишіть таке:

Form1.Caption:= Edit1.Text;

Передбачається, що ви не змінювалися назви форми або Edit. Якщо ви змінили ім'я форми, наприклад, на fMain, то напишіть

//зберігаємо заголовок форми:

ini.WriteString("Param", "C", Form1.Caption);

А у процедурі onCreate, знову ж таки, перед закриттям ini-файлу, додайте:

//читаємо заголовок форми:

Form1.Caption:= ini.ReadString("Param", "C", "Програма");

Як бачите, робота з рядками мало відрізняється від роботи з числами! Збережіть проект, скомпілюйте та подивіться, як він працює. Введіть нову назву вікна, натисніть кнопку "Застосувати", вийдіть із програми та знову відкрийте її. Текст у системному рядку програми має зберегтися.

Тепер попрацюємо із логічним параметром. Встановіть на форму один CheckBox. У його властивості Caption напишіть "Параметр". Нам, власне, не важливо, який саме параметр можна зберегти, наприклад, чи дозволяти натискання на кнопку, чи дозволяти показ форми "Про програму", видимий чи невидимий буде якийсь компонент… Параметрів, які ви, можливо, захочете зберегти, може бути дуже багато. Зараз нам важливим є одне: властивість Checked компонента CheckBox може бути або True (параметр включений), або False (параметр вимкнений). Ось це нам і потрібно зберегти в ini-файл, а потім рахувати це з нього.

Перед закриттям ini-файлу в процедурі події onDestroy запам'ятаємо стан прапорця:

//Запам'ятовуємо прапорець:

ini.WriteBool("Param", "CB1", CheckBox1.Checked);

Якщо прапорець вимкнено, то замість False у параметрі ini-файлу запишеться 0. Якщо увімкнено – запишеться 1.

Тепер перед закриттям ini-файлу в процедурі події onCreate додамо рядки для зчитування даних з ini-файлу:

//читаємо стан прапорця:

CheckBox1.Checked:=ini.ReadBool("Param", "CB1", True);

За замовчуванням прапорець у нас буде включений. Коментарі, гадаю, зайві. Намагайтеся включати збереження параметрів у кожну програму.

Немає докладної офіційної специфікації формату. Починаючи з Windows 95, INI файли вважаються застарілими і як заміну ним Microsoft пропонує використовувати системний реєстр (). Проте INI файли продовжують використовуватися як додатками інших виробників, і компонентами ОС від Microsoft. Наприклад, файл boot.ini використовується у Windows NT4/2000/XP при завантаженні для вибору кількох ОС .

Хоча INI файли і набули популярності в Windows, вони можуть використовуватися в будь-якій ОС. Нескладна структура цього формату дозволяє легко обробляти їх програмно та має досить зрозумілий вигляд для читання та зміни людиною. Існують текстові редактори (наприклад, SciTE або Notepad++), які використовують підсвічування синтаксису та фолдинг для цього формату, що полегшує редагування файлів INI вручну.

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

Формат файлу

ini-файли - це звичайні текстові файли, які можна редагувати та переглядати за допомогою будь-якого текстового редактора. ini-файли мають такий формат:

; деякий коментар # коментар у стилі Unix; коментар про розділ var1=значення_1; іноді допускається коментар до окремого параметра var2=значення_2 var1=значення_1 var2=значення_2; іноді дозволяється перераховувати кілька значень через кому var1=значення_1_1, значення_1_2, значення_1_3 var2=значення_2; в Zend Framework масив задається наступним способом var1=значення_1_1 var1=значення_1_2 var1=значення_1_3 var2=значення_2 ; Іноді значення відсутні Mode=Vid=FolderType=Generic

INI файл може містити:

  • порожні рядки ;
  • коментарі - від символу « ; » (крапка з комою) до кінця рядка;
  • заголовки розділів - рядки, що складаються з назви розділу, укладеного у квадратні дужки »;
  • значення параметрів - рядки виду « ключ = значення ».

Угоди

Немає стандарту формату файлів INI. Хоча загальна структура таких файлів зазвичай зберігається, багато програмних продуктів вводять додаткові можливості або, навпаки, обмеження.

  • Коментарі . Деякі програми (наприклад, Samba) вважають символом початку коментаря як ";", так і "#".
  • Зворотний слеш . Іноді допускається використання зворотного слеша "\" для оголошення наступного рядка продовженням цього. У такому разі вони будуть оброблені як один цілий рядок. Іноді можна використовувати «\» для введення спецсимволів, наприклад, "\n" для позначення переносу рядка.
  • Поодинокі параметри . Найчастіше наявність двох однакових ключів у одній секції заборонено (при цьому обробляється тільки останній ключ).
  • Поодинокі імена секцій . Зазвичай за наявності кількох секцій з однаковими іменами у файлі обробляється лише остання їх. Деякі програми об'єднують вміст таких секцій в одну.

Приклад реалізації

Розглянемо код, який обробляє заданий коректний ini-файл та виводить його у спеціальному вигляді:

int main() ( freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); int n; cin >> n; cin.get(); map > mp; string from=""; for (int i = 0; i< n; i++) { string s; getline(cin, s); for (size_t j = 0; j < s.size();) { if (s[j] == " ") s.erase(j, 1); else j++; } if (s.size() == 0 || s == ";") { continue; } if (s == "[") { s.erase(0, 1); s.erase(s.size() - 1, 1); from = s; mp; } else { mp = s.substr(s.find("=") + 1, s.size() - s.find("=")); } } for (map < string, map > :: iterator it = mp.begin(); it! = mp.end(); it++) ( if (it -> first != "") ( cout<< "[" << it ->first<<"]" << endl; } for (map < string, string >::iterator itt = mp.begin(); itt! = mp.end(); itt++) ( cout<< itt ->first<< "=" << itt ->second<< endl; } } return 0; }

Див. також

Напишіть відгук про статтю ".ini"

Посилання

Уривок, що характеризує

– Жаль, мадонно. Він лише сказав, що ви дуже помилялися, і що кохання нікому ще не приносило добра. Якщо це про щось вам говорить, Ізідоро.
Я лише кивнула, намагаючись зібрати свої думки, що розлітаються в паніці. І намагаючись не показати Мороне, наскільки вразила мене сказана їм новина, як можна спокійніше вимовила:
- Чи дозволите підлікувати вас, монсеньйоре? Мені здається, вам знову не завадить моя «відьома» допомога. І дякую вам за звістку... Навіть за погану. Адже завжди краще заздалегідь знати плани ворога, навіть найгірші, чи не так?
Мороне уважно вдивлявся мені в очі, болісно намагаючись знайти у них відповідь на якесь важливе для нього питання. Але моя душа закрилася від світу, щоб не захворіти... щоб вистояти майбутнє випробування... І кардинала зустрічав тепер лише завчений «світський» погляд, що не дозволяв проникнути в мою душу, що застигла в жаху.
- Невже ви боїтеся, мадонно? – тихо спитав Мороне. — Ви ж тисячу разів сильніші за нього! Чому ви його боїтеся?!
- Він має щось, з чим я поки що не в змозі боротися... І поки не в змозі його вбити. О, повірте мені, ваше преосвященство, якби я тільки знайшла ключ до цієї отруйної гадюки!.. - і, схаменувшись, відразу запропонувала: - Дозвольте мені все ж таки зайнятися вами? Я полегшу ваш біль.
Але кардинал з усмішкою відмовився.
– Завтра я вже буду в іншому, більш спокійному місці. І сподіваюся, Караффа про мене на якийсь час забуде. Ну, а як же ви, мадонно? Що ж станеться з вами? Я не можу допомогти вам із ув'язнення, але мої друзі досить впливові. Чи можу я вам бути корисним?
– Дякую вам, монсеньйоре, за вашу турботу. Але я не маю марних надій, сподіваючись вийти звідси... Він ніколи не відпустить мене... Ні мою бідну дочку. Я живу, щоб його знищити. Йому не повинно бути місця серед людей.
- Шкода, що я не впізнав вас раніше, Ізидоро. Можливо, ми стали б добрими друзями. А тепер прощайте. Вам тут не можна залишатися. Тато обов'язково з'явиться побажати мені «удачі». Вам нема чого з ним тут зустрічатися. Збережіть вашу дочку, мадонно... І не здайтеся Караффе. Бог нехай буде з вами!
– Про якого Бога ви кажете, монсеньйоре? – сумно спитала я.
— Мабуть, не про те, якому молиться Караффа!.. — усміхнувся Мороне.
Я ще мить постояла, намагаючись запам'ятати у своїй душі образ цієї чудової людини, і махнувши на прощання рукою, вийшла в коридор.
Небо розверзлося шквалом тривоги, паніки та страху!.. Де була зараз моя хоробри, самотня дівчинка?! Що спонукало її покинути Метеору?.. На мої наполегливі заклики Ганна чомусь не відповідала, хоч я знала, що вона мене чує. Це вселяло ще більшу тривогу, і я лише з останніх сил трималася, щоб не піддаватися паніці, що спалювала душу, бо знала - Караффа неодмінно скористається будь-якою моєю слабкістю. І тоді мені доведеться програти, ще навіть не почавши чинити опір...
Усамітнившись у «своїх» покоях, я «зализувала» старі рани, навіть не сподіваючись, що вони колись заживуть, а просто намагаючись бути якомога сильнішим і спокійнішим на випадок будь-якої можливості розпочати війну з Караффою... На диво сподіватися сенсу не було, тому що я чудово знала – у нашому випадку чудес не передбачалося... Все, що відбудеться, я маю зробити тільки сама.
Бездіяльність убивала, змушуючи почуватися всіма забутою, безпорадною і непотрібною... І хоча я чудово знала, що не права, черв'як «чорного сумніву» вдало гриз запалений мозок, залишаючи там яскравий слід невпевненості та жалю...
Я не шкодувала, що знаходжусь у Карафи сама... Але панічно боялася за Ганну. А також, все ще не могла пробачити собі загибель батька і Джіроламо, моїх улюблених і найкращих для мене на світі людей... Чи зможу я помститися за них коли-небудь? ? Що я не знищу його, а лише безглуздо загину сама?.. Невже мав рацію Північ, запрошуючи піти в Метеору? І невже надія знищити Папу весь цей час жила тільки в мені самій?!
І ще... Я відчувала, що дуже втомилася... Нелюдськи, страшно втомилася... Іноді навіть здавалося - а чи не краще було й справді піти в Метеору?.. Адже хтось туди йшов?.. І чому їх не турбувало, що навколо вмирали люди. Для них було важливо ДІЗНАТИСЯ, отримати потаємне ЗНАННЯ, оскільки вони вважали себе виключно обдарованими... Але, з іншого боку, якщо вони по-справжньому були такими вже «винятковими», то як же в такому разі вони забули найпростішу, але по-моєму дуже важливу нашу заповідь - не йди на спокій, поки твоєї допомоги потребують інші... Як же вони могли так просто закритися, навіть не озирнувшись навколо, не спробувавши допомогти іншим?.. Як заспокоїли свої душі?

Найчастішою причиною проблем із розкриттям файлу INI є просто відсутність відповідних програм, встановлених на вашому комп'ютері. У такому випадку достатньо знайти, завантажити та встановити програму, яка обслуговує файли у форматі INI – такі програми доступні нижче.

Пошукова система

Введіть розширення файлу

Допомога

Підказка

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

Що робити, якщо програму зі списку вже встановлено?

Часто встановлена ​​програма повинна автоматично зв'язатися з файлом INI. Якщо це не сталося, файл INI успішно можна зв'язати вручну з ново встановленим додатком. Достатньо натиснути правою кнопкою мишки на файл INI, а потім серед доступних вибрати опцію "Вибрати програму за замовчуванням". Потім необхідно вибрати опцію "Переглянути" і відшукати обраний додаток. Введені зміни необхідно затвердити за допомогою опції "OK".

Програми, що відкривають файл INI

Windows
Mac OS
Linux

Чому я не можу відкрити файл INI?

Проблеми з файлами INI можуть мати також інший ґрунт. Іноді навіть встановлення на комп'ютері програмного забезпечення, що обслуговує INI файли не вирішить проблему. Причиною неможливості відкриття, а також роботи з файлом INI може бути:

Невідповідні зв'язки файлу INI у записах реєстру
- пошкодження файлу INI, який ми відкриваємо
- інфікування файлу INI (віруси)
- надто маленький ресурс комп'ютера
- неактуальні драйвери
- усунення розширення INI із реєстру системи Windows
- незавершене встановлення програми, що обслуговує розширення INI

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

Мій комп'ютер не показує розширення файлів, що робити?

У стандартних установках Windows користувач комп'ютера не бачить розширення файлів INI. Це успішно можна змінити у налаштуваннях. Достатньо увійти в "Панель управління" та вибрати "Вигляд та персоналізація". Потім необхідно увійти в "Опції папок" і відкрити "Вид". В закладці "Вид" знаходиться опція "Укрити розширення відомих типів файлів" - необхідно вибрати цю опцію та підтвердити операцію натисканням кнопки "OK". У цей момент розширення всіх файлів, у тому числі INI, повинні з'явитися сортовані за назвою файлу.

Ini tialization file ) - це конфігураційний файл , який містить дані налаштувань для Microsoft Windows , Windows NT і деяких програм.

З'явилися з перших версій Windows. У версії Windows 1.01 це був лише файл WIN.INI. Windows 3.0 додав файл SYSTEM.INI. А потім їхня кількість почала зростати швидко і безконтрольно.

Немає докладної офіційної специфікації формату. Починаючи з Windows 95, INI файли вважаються застарілими і як заміну ним Microsoft пропонує використовувати системний реєстр (Registry). Проте INI файли продовжують використовуватися як додатками інших виробників, і компонентами ОС від Microsoft. Наприклад, файл boot.ini використовується у Windows NT4/2000/XP при завантаженні для вибору кількох ОС .

Хоча INI файли і набули популярності в Windows, вони можуть використовуватися в будь-якій ОС. Нескладна структура цього формату дозволяє легко обробляти їх програмно та має досить зрозумілий вигляд для читання та зміни людиною. Існують текстові редактори (наприклад, SciTE або Notepad++), які використовують підсвічування синтаксису та фолдинг для цього формату, що полегшує редагування файлів INI вручну.

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

Формат файлу

ini-файли - це звичайні текстові файли, які можна редагувати та переглядати за допомогою будь-якого текстового редактора. ini-файли мають такий формат:

; деякий коментар # коментар у стилі Unix ; коментар про розділ var1 = значення_1; іноді допускається коментар до окремого параметра var2 = значення_2 var1 = значення_1 var2 = значення_2 ; іноді дозволяється перераховувати кілька значень через кому var1 = значення_1_1, значення_1_2, значення_1_3 var2 = значення_2 ; в Zend Framework масив задається в такий спосіб var1 = значення_1_1 var1 = значення_1_2 var1 = значення_1_3 var2 = значення_2 ; Іноді значення відсутні Mode = Vid = FolderType = Generic

INI файл може містити:

  • порожні рядки ;