ИНИ датотеке су текстуалне датотеке које се користе за чување конфигурационих података апликације.
Иако Виндовс препоручује коришћење система Виндовс Регистри за чување конфигурационих података специфичних за апликацију, а у многим ће случајевима ИНИ датотеке омогућити бржи начин да програм приступи његовим поставкама. Сам Виндовс чак користи ИНИ датотеке; десктоп.ини и боот.ини само два примера.
Једна једноставна употреба ИНИ датотека као механизма за спремање статуса била би спремање величине и локације обрасца ако желите да се образац поново појави на својој претходној позицији. Уместо да претражимо целину база података за проналажење величине или локације користи се ИНИ датотека.
Формат датотеке ИНИ
Датотека поставки поставки иницијализације или конфигурације (.ИНИ) је текстуална датотека с ограничењем од 64 КБ подијељена у одјељке, а сваки садржи нула или више кључева. Сваки тастер садржи нулу или више вредности.
Ево примера:
[СецтионНаме]
кеинаме1 = вредност
; коментар
кеинаме2 = вредност
Називи одсека затворени су у заградама и морају почети на почетку реда. Имена секција и кључева не разликују велика и мала слова (случај није важан) и не могу садржавати размаке. Тхе кључно име следи знак једнакости ("="), опционо окружен размачним знаковима, који се игноришу.
Ако се исти одељак појављује више пута у истој датотеци или ако се исти тастер појављује више пута у истом одељку, превладава последња појава.
Кључ може да садржи низ, цели број или боолеанвредност.
Делпхи ИДЕ користи ИНИ формат датотеке у многим случајевима. На пример, .ДСК датотеке (подешавања радне површине) користе ИНИ формат.
ТИниФиле класа
Делпхи нуди ТИниФиле класе, декларисан у инифилес.пас Јединица, с методама за чување и преузимање вриједности из ИНИ датотека.
Пре рада са методама ТИниФиле, морате да креирате инстанцу класе:
користи инифилес;
...
вар
ИниФиле: ТИниФиле;
започети
ИниФиле: = ТИниФиле. Креирај ('миапп.ини');
Горњи код ствара ИниФиле објект и додељује 'миапп.ини' једином својству класе - тхе Својство ФилеНаме — Користи се за одређивање имена ИНИ датотеке коју користите.
Код који је горе написан тражи се миапп.ини датотека у \ Виндовс директоријум. Бољи начин за чување података апликације је у мапи апликације - само одредите пуно име пута датотеке за Креирај метода:
// ставите ИНИ у директоријум апликација,
// нека има име апликације
// и 'ини' за проширење:
иниФиле: = ТИниФиле. Креирајте (ЦхангеФилеЕкт (апликација). ЕкеНаме, '. Ини'));
Читање са ИНИ-ја
ТИниФиле класа има неколико "реад" метода. РеадСтринг гласи а вредност стринга са кључа, РеадИнтегер. РеадФлоат и слично користе се за читање броја са кључа. Све методе „читања“ имају задану вредност која се може користити ако унос не постоји.
На пример, РеадСтринг је декларисан као:
функција РеадСтринг (цонст Одељак, идентитет, задано: стринг): стринг; прегазити;
Пишите на ИНИ
ТИниФиле има одговарајућу "врите" методу за сваку методу "реад". То су ВритеСтринг, ВритеБоол, ВритеИнтегер итд.
На пример, ако желимо да програм памти име последње особе која га је користила, када је била и које су главне координате форме, могли бисмо успоставити одељак који се зове Корисници, кључна реч која се зове Последња, Датум за праћење информација и одељак под називом Постављање са кључевима Врх, Лево, Ширина, и Висина.
пројецт1.ини
[Корисник]
Последњи = Жарко Гајић
Датум = 01/29/2009
[Постављање]
Топ = 20
Лево = 35
Ширина = 500
Висина = 340
Имајте на уму да је кључ именован Последња садржи вредност низа, Датум садржи вредност ТДатеТиме и све тастере у Постављање одељак садржи цела вредност.
ОнЦреате догађај главног обрасца је савршено место за смештање кода потребног за приступ вредностима у датотеци за покретање апликације:
процедура ТМаинФорм. ФормЦреате (пошиљалац: ТОбјецт);
вар
аппИНИ: ТИниФиле;
ЛастУсер: стринг;
ЛастДате: ТДатеТиме;
започети
аппИНИ: = ТИниФиле. Креирајте (ЦхангеФилеЕкт (апликација). ЕкеНаме, '. Ини'));
покушати
// ако ниједан задњи корисник не врати празан низ
ЛастУсер: = аппИНИ.РеадСтринг ('Корисник', 'Последњи', '');
// ако се последњи датум не врати на данашњи датум
ЛастДате: = аппИНИ.РеадДате ('Корисник', 'Датум', Датум);
// покажи поруку
СховМессаге ('Овај програм је претходно користио' + ЛастУсер + 'он' + ДатеТоСтр (ЛастДате));
Топ: = аппИНИ.РеадИнтегер ('Положај', 'Врх', Врх);
Лево: = аппИНИ.РеадИнтегер ('Положај', 'Лево', Лево);
Видтх: = аппИНИ.РеадИнтегер ('Положај', 'Ширина', Ширина);
Висина: = аппИНИ.РеадИнтегер ('Положај', 'Висина', Висина);
напокон
аппИНИ.Фрее;
крај;
крај;
ОнЦлосе догађај главне форме идеалан је за све Сачувај ИНИ део пројекта.
процедура ТМаинФорм. ФормЦлосе (пошиљалац: ТОбјецт; вар Акција: ТЦлосеАцтион);
вар
аппИНИ: ТИниФиле;
започети
аппИНИ: = ТИниФиле. Креирајте (ЦхангеФилеЕкт (апликација). ЕкеНаме, '. Ини'));
покушати
аппИНИ.ВритеСтринг ('Корисник', 'Последњи', 'Жарко Гајић');
аппИНИ.ВритеДате ('Корисник', 'Датум', Датум);
са аппИНИ, МаинФорм урадити
започети
ВритеИнтегер ('Пласман', 'Врх', Врх);
ВритеИнтегер ('Пласман', 'Лево', Лево);
ВритеИнтегер ('Положај', 'Ширина', Ширина);
ВритеИнтегер ('Положај', 'Висина', Висина);
крај;
напокон
аппИни. Бесплатно;
крај;
крај;
ИНИ секције
Тхе ЕрасеСецтион брише цео одељак ИНИ датотеке. РеадСецтион и РеадСецтионс испуните ТСтрингЛист објект са именима свих одељка (и именима кључева) у ИНИ датотеци.
Ограничења и недостаци ИНИ
Користи се класа ТИниФиле Виндовс АПИ што намеће ограничење од 64 КБ за ИНИ датотеке. Ако требате да похраните више од 64 КБ података, требало би да користите ТМемИниФиле.
Други проблем може настати ако имате одјељак с више од 8 К вриједности. Један од начина за решавање проблема је писање сопствене верзије методе РеадСецтион.