INI failai yra tekstiniai failai, naudojami programos konfigūracijos duomenims saugoti.
Vis dėlto „Windows“ rekomenduoja naudoti „Windows“ registrą konkrečios programos konfigūracijos duomenims saugoti. Daugeliu atvejų pastebėsite, kad INI failai suteikia galimybę greičiau pasiekti programą jos nustatymams. Pati „Windows“ netgi naudoja INI failus; darbalaukis.ini ir boot.ini yra tik du pavyzdžiai.
Vienas paprastas INI failų panaudojimas kaip būsenos išsaugojimo mechanizmas būtų formos dydžio ir vietos išsaugojimas, jei norite, kad forma vėl atsirastų į ankstesnę vietą. Užuot ieškoję visumos informacijos duomenų bazė norint rasti dydį ar vietą, vietoj jo naudojamas INI failas.
INI failo formatas
Iniciacijos arba konfigūracijos parametrų failas (.INI) yra tekstinis failas, kurio limitas 64 KB, padalintas į skyrius, kiekviename jų yra nulis ar daugiau klavišų. Kiekviename klavipe yra nulis ar daugiau verčių.
Štai pavyzdys:
[Skyriaus pavadinimas]
keyname1 = reikšmė
; komentaras
keyname2 = reikšmė
Skyrių pavadinimai pridedami laužtiniuose skliaustuose ir turi prasidėti eilutės pradžioje. Skyrių ir raktų pavadinimai neturi reikšmių didžiųjų ir mažųjų raidžių atžvilgiu (atvejis nesvarbus) ir juose negali būti tarpų simbolių. rakto vardas po jų eina lygybės ženklas ("="), kurį pasirinktinai supa tarpai tarp ženklų, kurie nepaisomi.
Jei ta pati byla tame pačiame faile rodoma daugiau nei vieną kartą arba jei ta pati raktas tame pačiame skyriuje rodoma daugiau nei vieną kartą, tada pirmenybė teikiama paskutiniam įvykiui.
Raktą gali sudaryti stygos, sveikasis skaičius arba booleanvertės.
Delfi IDE daugeliu atvejų naudoja INI failo formatą. Pavyzdžiui, .DSK failai (darbalaukio nustatymai) naudoja INI formatą.
„TIniFile“ klasė
„Delphi“ teikia „TIniFile“ klasė, deklaruota inifiles.pas vienetas, kuriame naudojami būdai saugoti ir nuskaityti vertes iš INI failų.
Prieš dirbdami su TIniFile metodais, turite sukurti klasės egzempliorių:
naudoja inifiles;
...
var
„IniFile“: „TIniFile“;
prasideda
„IniFile“: = „TIniFile“. Kurti ('myapp.ini');
Aukščiau pateiktas kodas sukuria „IniFile“ objektą ir priskiria „myapp.ini“ vienintelei klasės savybei - Nuosavybė „FileName“ —Naudojamas norint nurodyti naudojamo INI failo pavadinimą.
Aukščiau parašytas kodas ieško myapp.ini failą \ „Windows“ katalogą. Geriau saugoti programos duomenis yra programos aplanke - tiesiog nurodykite visą failo maršruto pavadinimą Sukurti metodas:
// įdėkite INI į programos aplanką,
// tegul jis turi programos pavadinimą
// ir „ini“ pratęsimui:
„iniFile“: = „TIniFile“. Sukurti (ChangeFileExt). ExeName, '. Ini'));
Skaitymas iš INI
„TIniFile“ klasėje yra keli „skaitymo“ metodai. „ReadString“ skaito a eilutės reikšmė iš rakto, „ReadInteger“. „ReadFloat“ ir panašios yra naudojamos skaitant numerį iš klavišo. Visi „skaitymo“ metodai turi numatytąją vertę, kurią galima naudoti, jei įrašo nėra.
Pvz., „ReadString“ deklaruojama kaip:
funkcija „ReadString“ (const Skyrius, tapatybė, numatytoji reikšmė: stygos): stygos; nepaisyti;
Rašykite INI
„TIniFile“ turi atitinkamą „rašymo“ metodą kiekvienam „skaitymo“ metodui. Jie yra „WriteString“, „WriteBool“, „WriteInteger“ ir kt.
Pvz., Jei norime, kad programa atsimintų paskutinio ją naudojusio asmens vardą, kada jis buvo, ir kokios buvo pagrindinės formos koordinatės, galime įsteigti skyrių, pavadintą Vartotojai, raktinis žodis vadinamas Paskutinis, Data sekti informaciją ir skyrių, vadinamą Talpinimas su raktais Viršuje, Kairėje, Plotisir Ūgis.
projektas1.ini
[Vartotojas]
Paskutinis = Zarko Gajičius
Data = 2009 m. Rugsėjo 29 d
[Talpinimas]
Viršuje = 20
Kairė = 35
Plotis = 500
Aukštis = 340
Atminkite, kad raktas pavadintas Paskutinis turi eilutės reikšmę, Data turi „TDateTime“ reikšmę, o visi klavišai - Talpinimas skyriuje laikykite sveikąją vertę.
Pagrindinės formos „OnCreate“ įvykis yra puiki vieta saugoti kodą, reikalingą norint pasiekti reikšmes programos inicializacijos faile:
procedūra „TMainForm“. „FormCreate“ (siuntėjas: „TObject“);
var
„appINI“: „TIniFile“;
Paskutinis vartotojas: eilutė;
„LastDate“: „TDateTime“;
prasideda
appINI: = „TIniFile“. Sukurti (ChangeFileExt). ExeName, '. Ini'));
bandyti
// jei nė vienas paskutinis vartotojas negrąžina tuščios eilutės
Paskutinis vartotojas: = appINI.ReadString ('Vartotojas', 'Paskutinis', '');
// jei paskutinė data negrįžta į šiandienos datą
LastDate: = appINI.ReadDate ('Vartotojas', 'Data', Data);
// parodyti žinutę
ShowMessage ('Ši programa anksčiau buvo naudojama' + LastUser + 'on' + DateToStr (LastDate));
Viršuje: = appINI.ReadInteger („Talpinimas“, „Viršuje“, Viršuje);
Kairė: = appINI.ReadInteger ('Vieta', 'Kairė', Kairė);
Plotis: = appINI.ReadInteger ('Vieta', 'Plotis', Plotis);
Aukštis: = appINI.ReadInteger ('Vieta', 'Aukštis', Aukštis);
pagaliau
appINI.Free;
galas;
galas;
Pagrindinės formos „OnClose“ renginys yra idealus Išsaugokite INI projekto dalis.
procedūra „TMainForm“. „FormClose“ (siuntėjas: „TObject“; var Veiksmas: „TCloseAction“;
var
„appINI“: „TIniFile“;
prasideda
appINI: = „TIniFile“. Sukurti (ChangeFileExt). ExeName, '. Ini'));
bandyti
appINI.WriteString („Vartotojas“, „Paskutinis“, „Zarko Gajičius“);
appINI.WriteDate ('Vartotojas', 'Data', Data);
su „AppINI“, „MainForm“ daryti
prasideda
„WriteInteger“ („Talpinimas“, „Į viršų“, Viršuje);
„WriteInteger“ („Talpinimas“, „Kairė“, Kairė);
„WriteInteger“ („Talpinimas“, „Plotis“, Plotis);
„WriteInteger“ („Talpinimas“, „Aukštis“, Aukštis);
galas;
pagaliau
appIni. Laisvas;
galas;
galas;
INI skyriai
„EraseSection“ ištrina visą INI failo skyrių. „ReadSection“ ir „ReadSections“ užpildykite „TStringList“ objektą visų INI failo skyrių pavadinimais (ir raktų pavadinimais).
INI apribojimai ir trūkumai
„TIniFile“ klasė naudoja „Windows“ API kuris INI failams nustato 64 KB ribą. Jei jums reikia saugoti daugiau nei 64 KB duomenų, turėtumėte naudoti „TMemIniFile“.
Kita problema gali kilti, jei turite skyrių, kurio vertė didesnė kaip 8 K. Vienas iš būdų išspręsti problemą yra parašyti savo „ReadSection“ metodo versiją.