Jak edytować pliki INI w Delphi

Praca z plikami ustawień konfiguracyjnych (.INI)

Skoncentrowana Afroamerykanka przeprowadza burzę mózgów podczas kodowania danych na komputerze stacjonarnym.

Getty Images / E+ / skynesher





Pliki INI to pliki tekstowe używane do przechowywania danych konfiguracyjnych aplikacji.

Nawet jeśli Okna zaleca używanie Rejestru Windows do przechowywania danych konfiguracyjnych specyficznych dla aplikacji, w wielu przypadkach okaże się, że pliki INI zapewniają programowi szybszy dostęp do ustawień. Sam system Windows używa nawet plików INI; desktop.ini oraz boot.ini to tylko dwa przykłady.



Jednym z prostych zastosowań plików INI jako mechanizmu zapisywania stanu byłoby zapisanie rozmiaru i lokalizacji formularza, jeśli chcesz, aby formularz pojawił się ponownie w poprzedniej pozycji. Zamiast przeszukiwać całość baza informacji aby znaleźć rozmiar lub lokalizację, zamiast tego używany jest plik INI.

Format pliku INI

Plik ustawień inicjalizacji lub konfiguracji (.INI) to plik tekstowy z limitem 64 KB podzielony na sekcje, z których każda zawiera zero lub więcej kluczy. Każdy klucz zawiera zero lub więcej wartości.



Oto przykład:

|_+_||_+_|

Nazwy sekcji są ujęte w nawiasy kwadratowe i muszą zaczynać się na początku wiersza. W nazwach sekcji i kluczy nie jest rozróżniana wielkość liter (wielkość liter nie ma znaczenia) i nie mogą zawierać znaków odstępów. The nazwa klucza następuje po nim znak równości ('='), opcjonalnie otoczony odstępami, które są ignorowane.

Jeśli ta sama sekcja pojawia się więcej niż raz w tym samym pliku lub jeśli ten sam klucz pojawia się więcej niż raz w tej samej sekcji, pierwszeństwo ma ostatnie wystąpienie.

Klucz może zawierać strunowy , liczba całkowita lublogiczne wartość .​



Delfy IDE w wielu przypadkach używa formatu pliku INI. Na przykład, Pliki .DSK (ustawienia pulpitu) wykorzystują format INI.

Klasa TIniFile

Delphi zapewnia TI-File klasa, zadeklarowana w inifiles.pas jednostki, z metodami przechowywania i pobierania wartości z plików INI.



Przed rozpoczęciem pracy z metodami TIniFile musisz utworzyć instancję klasy:

|_+_||_+_|

Powyższy kod tworzy obiekt IniFile i przypisuje 'myapp.ini' do jedynej właściwości klasy — Właściwość FileName służy do określenia nazwy pliku INI, którego chcesz użyć.



Kod, jak napisano powyżej, szuka mojaaplikacja.ini plik w Windows informator. Lepszym sposobem przechowywania danych aplikacji jest folder aplikacji - wystarczy podać pełną ścieżkę do pliku dla Tworzyć metoda:

|_+_||_+_|

Czytanie z INI

Klasa TIniFile ma kilka metod „odczytu”. ReadString odczytuje a wartość ciągu z klucza ReadInteger. ReadFloat i podobne służą do odczytywania liczby z klucza. Wszystkie metody „odczyt” mają wartość domyślną, której można użyć, jeśli wpis nie istnieje.



Na przykład ReadString jest zadeklarowany jako:

|_+_||_+_|

Napisz do INI

TIniFile ma odpowiednią metodę 'zapisu' dla każdej metody 'odczytu'. Są to WriteString, WriteBool, WriteInteger itp.

Na przykład, jeśli chcemy, aby program zapamiętywał nazwisko ostatniej osoby, która go używała, kiedy to było i jakie były współrzędne postaci głównej, możemy utworzyć sekcję o nazwie Użytkownicy , słowo kluczowe o nazwie Ostatni , Data do śledzenia informacji i sekcji o nazwie Umieszczenie z klawiszami Top , Lewy , Szerokość , oraz Wzrost .

|_+_||_+_|

Zauważ, że klucz o nazwie Ostatni przechowuje wartość ciągu, Data przechowuje wartość TDateTime, a wszystkie klucze w Umieszczenie sekcja przechowuje wartość całkowitą.

Zdarzenie OnCreate formularza głównego jest idealnym miejscem do przechowywania kodu potrzebnego do uzyskania dostępu do wartości w pliku inicjującym aplikacji:

|_+_||_+_|

Impreza OnClose głównej formy jest idealna dla Zachowaj to część projektu.

|_+_||_+_|

TO sekcje

The Usuń sekcję usuwa całą sekcję pliku INI. Przeczytaj sekcję oraz Przeczytaj sekcje wypełnić obiekt TStringList nazwami wszystkich sekcji (i nazwami kluczy) w pliku INI.

Ograniczenia i wady INI

Klasa TIniFile używaWindows APIco nakłada limit 64 KB na pliki INI. Jeśli potrzebujesz przechowywać więcej niż 64 KB danych, powinieneś użyć TMemIniFile.

Inny problem może się pojawić, jeśli masz sekcję o wartości większej niż 8 K. Jednym ze sposobów rozwiązania problemu jest napisanie własnej wersji metody ReadSection.