Pliki INI to nic innego jak pliki zawierające konfigurację jakiegoś programu. Coraz częściej te pliki zastępuje się korzystaniem z rejestru, co jest bardziej wygodne.
1.Przykładowa struktura naszego pliku (np. setup.ini):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
[Ustawienia] Tytul=Przykladowy Program X=100 Y=200 Szerokosc=400 Wysokosc=350 [Ostatnio otwierane] Plik1=C:a.txt Plik2=C:b.txt Plik3=C:c.txt |
Umieściliśmy w naszym pliku informacje o tytule programu, jego pozycji, szerokości, wysokości oraz ścieżki do trzech ostatnio otwieranych plików.
2.Tworzenie i zapis do plików
Na początku do deklaracji uses musimy dodać IniFiles, następnie plik konfiguracyjny tworzymy za pomocą polecenia Create np :
1 2 3 4 5 6 7 8 9 |
var ini: TInIFile; begin InI := TIniFile.Create(ExtractFilePath(ParamStr(0))+'setup.ini'); InI.Free; //czyści pamięć end; |
Zmienna ParamStr(0) zawiera ścieżka wraz z nazwą naszego programu. Poprzez polecenie ExtractFilePath wyciągniemy nazwę katalogu w którym znajduje się program. Dzięki temu plik setup.ini zostanie utworzony w tym katalogu gdzie znajduje się program.
Tworzenie nowych elementów:
Tekst :
1 |
InI.WriteString('Sekcja','Typ','Wartosc'); |
Liczba całkowita :
1 |
InI.WriteInteger('Sekcja','Typ',0); |
Włączony / Wyłączony :
1 |
InI.WriteBool('Sekcja','Typ',True); |
Data :
1 |
InI.WriteDate('Sekcja','Typ',TDate(Date)); |
Data i godzina :
1 |
InI.WriteDateTime('Sekcja','Typ',TDateTime(Time)); |
Godzina :
1 |
InI.WriteTime('Sekcja','Typ',TTime(Time)); |
Liczba rzeczywista :
1 |
InI.WriteFloat('Sekcja','Typ',4.23); |
Wartość binarna :
1 |
InI.WriteBinaryStream('Sekcja','Typ',Stream); |
Jeśli zapiszemy w/w polecenie (String) powinniśmy otrzymać :
1 2 3 |
[Sekcja] Typ=Wartosc |
3.Odczyt zmiennych z pliku
Do odczytu wartości używamy tych samych poleceń co do zapisy. Zastępujemy jedynie słowo Write(zapisz) słowem Read(odczytaj). Oto przykład odczytu wartości :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
procedure TForm1.FormShow(Sender: TObject); var InI : TIniFile; begin InI := TIniFile.Create(ExtractFilePath(ParamStr(0))+'setup.ini'); try Form1.Caption := InI.ReadString('Ustawienia','Tytul',''); Form1.Left := InI.ReadInteger('Ustawienia','X',0); Form1.Top := InI.ReadInteger('Ustawienia','Y',0); Form1.Width := InI.ReadInteger('Ustawienia','Szerokosc',0); Form1.Height := InI.ReadInteger('Ustawienia','Wysokosc',0); finally InI.Free; end; end; |
4.Usuwanie zmiennych z pliku
Aby usunąć całą grupę np. Ustawienia musimy użyć polecenia
1 |
InI.EraseSection('Ustawienia'); |
zaś, jeśli chcemy usunąć tylko daną zmienną posłużymy się
1 |
InI.DeleteKey('Ustawienia','Tytul'); |
Przydatne może się okazać polecenie, które sprawdza czy dana grupa istnieje
1 |
if InI.SectionExists('Ustawienia') then ... |
5.Odczyt całych grup oraz ich wartości
Mamy możliwość zapisania np. do listy TListBox nazw wszystkich grup, zmiennych danej grupy, wartości zmiennych danej grupy. W tym celu posłużymy się poleceniami: Odczyt nazw grup :
1 |
InI.ReadSections(ListBox1.Items); |
Odczyt nazw zmiennych danej grupy :
1 |
InI.ReadSection('Ustawienia',ListBox1.Items); |
Odczyt wartości zmiennych danej grupy :
1 |
InI.ReadSectionValues('Ustawienia',ListBox1.Items); |
W ten sposób dotarliśmy do końca tej lekcji.