Súbory INI sú textové súbory, ktoré sa používajú na ukladanie konfiguračných údajov aplikácie.
Aj keď windows odporúča použitie Registra Windows na ukladanie konfiguračných údajov špecifických pre aplikáciu. V mnohých prípadoch zistíte, že súbory INI poskytujú programu rýchlejší prístup k jeho nastaveniam. Windows samotné dokonca používajú súbory INI; Desktop.ini a boot.ini iba dva príklady.
Jedným jednoduchým použitím súborov INI ako mechanizmu na uloženie stavu by bolo uloženie veľkosti a umiestnenia formulára, ak sa má formulár znova objaviť na svojej predchádzajúcej pozícii. Namiesto prehľadávania celého celku informačná databáza na zistenie veľkosti alebo umiestnenia sa namiesto toho použije súbor INI.
Formát súboru INI
Inicializačný alebo konfiguračný súbor nastavení (.INI) je textový súbor s limitom 64 KB rozdelený do sekcií, z ktorých každá obsahuje nuly alebo viac kľúčov. Každý kľúč obsahuje nulu alebo viac hodnôt.
Tu je príklad:
[Názov sekcie]
keyname1 = hodnota
; komentár
keyname2 = hodnota
Názvy sekcií sú uzavreté v hranatých zátvorkách a musia začínať na začiatku riadku. Názvy častí a kľúčov nerozlišujú veľké a malé písmená (prípad nezáleží) a nemôžu obsahovať medzery. názov kľúča nasleduje znak rovnosti ("="), voliteľne obklopený medzerami, ktoré sa ignorujú.
Ak sa rovnaká sekcia objaví v tom istom súbore viac ako raz alebo ak sa rovnaká klávesa objaví viackrát v tej istej sekcii, prevláda posledná udalosť.
Kľúč môže obsahovať povrázok, celé číslo alebo booleanhodnota.
Delphi IDE používa formát súboru INI v mnohých prípadoch. Napríklad, .SK súbory (nastavenia pracovnej plochy) využívajú formát INI.
Trieda TIniFile
Delphi poskytuje TIniFile trieda, deklarovaná v inifiles.pas s metódami ukladania a získavania hodnôt zo súborov INI.
Pred prácou s metódami TIniFile musíte vytvoriť inštanciu triedy:
použitie inifiles;
...
var
IniFile: TIniFile;
začať
IniFile: = TIniFile. Vytvorenie ( 'myapp.ini');
Vyššie uvedený kód vytvára objekt IniFile a priraďuje "myapp.ini" jedinej vlastnosti triedy - Vlastnosť FileName —Použité na určenie názvu súboru INI, ktorý chcete použiť.
Kód, ako je uvedený vyššie, hľadá myapp.ini súbor v \ Windows adresár. Lepší spôsob ukladania údajov aplikácie je v priečinku aplikácie - stačí zadať úplnú cestu k súboru pre vytvoriť metóda:
// vložte INI do priečinka aplikácie,
// nech má názov aplikácie
// a 'ini' pre rozšírenie:
iniFile: = TIniFile. Vytvoriť (ChangeFileExt (aplikácia. ExeName, '. Ini'));
Čítanie z INI
Trieda TIniFile má niekoľko metód „čítania“. ReadString číta a hodnota reťazca z kľúča ReadInteger. ReadFloat a podobné sa používajú na čítanie čísla z kľúča. Všetky metódy „čítania“ majú predvolenú hodnotu, ktorú je možné použiť, ak položka neexistuje.
Napríklad ReadString je deklarovaný ako:
funkcie ReadString (const Sekcia, Ident, Predvolené: String): String; potlačenie;
Napíšte INI
TIniFile má zodpovedajúcu metódu "write" pre každú metódu "read". Sú to WriteString, WriteBool, WriteInteger atď.
Napríklad, ak chceme, aby si program pamätal meno posledného človeka, ktorý ho použil, kedy bol a aké boli hlavné súradnice formulára, mohli by sme vytvoriť oddiel s názvom užívatelia, kľúčové slovo s názvom posledná, Dátum sledovať informácie a nazýva sa sekcia umiestnenia s kľúčmi top, Left, šírkaa výška.
project1.ini
[Užívateľ]
Last = Zarko Gajic
Date = 01/29/2009
[Umiestnenie]
Top = 20
Left = 35
Width = 500
Výška = 340
Všimnite si, že kľúč bol pomenovaný posledná má hodnotu reťazca, Dátum má hodnotu TDateTime a všetky kľúče v umiestnenia časť obsahuje celočíselnú hodnotu.
Udalosť OnCreate hlavného formulára je ideálnym miestom na uloženie kódu potrebného na prístup k hodnotám v inicializačnom súbore aplikácie:
procedúra TMainForm. FormCreate (odosielateľ: TObject);
var
appINI: TIniFile;
LastUser: string;
LastDate: TDateTime;
začať
appINI: = TIniFile. Vytvoriť (ChangeFileExt (aplikácia. ExeName, '. Ini'));
vyskúšať
// ak žiadny posledný používateľ nevracia prázdny reťazec
LastUser: = appINI.ReadString ('User', 'Last', '');
// ak neexistuje žiadny posledný dátum, vráťte sa do dnešného dňa
LastDate: = appINI.ReadDate ('User', 'Date', Date);
// zobraziť správu
ShowMessage ('Tento program predtým používal' + LastUser + 'dňa' + DateToStr (LastDate));
Hore: = appINI.ReadInteger ('Placement', 'Top', Top);
Vľavo: = appINI.ReadInteger ('Umiestnenie', 'Vľavo', Vľavo);
Width: = appINI.ReadInteger ('Placement', 'Width', Width);
Výška: = appINI.ReadInteger ('Umiestnenie', 'Výška', Výška);
konečne
appINI.Free;
koniec;
koniec;
Udalosť OnClose v hlavnom formulári je ideálna pre udalosť Uložiť INI časť projektu.
procedúra TMainForm. FormClose (odosielateľ: TObject; var Akcia: TCloseAction);
var
appINI: TIniFile;
začať
appINI: = TIniFile. Vytvoriť (ChangeFileExt (aplikácia. ExeName, '. Ini'));
vyskúšať
appINI.WriteString („Používateľ“, „Posledný“, „Zarko Gajic“);
appINI.WriteDate („Používateľ“, „Dátum“, Dátum);
s appINI, MainForm robiť
začať
WriteInteger ('Umiestnenie', 'Vrchol', Vrchol);
WriteInteger ('Umiestnenie', 'Doľava', Doľava);
WriteInteger ('Umiestnenie', 'Šírka', Šírka);
WriteInteger ('Umiestnenie', 'Výška', Výška);
koniec;
konečne
Appin. Zadarmo;
koniec;
koniec;
Sekcie INI
EraseSection vymaže celú časť súboru INI. ReadSection a ReadSections vyplňte objekt TStringList názvami všetkých sekcií (a názvov kľúčov) v súbore INI.
INI obmedzenia a nevýhody
Trieda TIniFile používa rozhranie API systému Windows ktorý ukladá súborom INI limit 64 kB. Ak potrebujete uložiť viac ako 64 KB údajov, mali by ste použiť TMemIniFile.
Ďalší problém sa môže vyskytnúť, ak máte časť s hodnotou viac ako 8 K. Jedným zo spôsobov riešenia problému je napísanie vlastnej verzie metódy ReadSection.