|
Jeśli niechcemy korzystać z rejestru do zapisania pewnych ustawień możemy użyć plików Ini. OBSŁUGA Najpierw musimy dodać moduł IniFiles do sekcji uses. Następnie deklarujemy zmienną np. var Ini : TIniFile;Teraz pora stworzyć obiekt: Ini := TIniFile.Create(NazwaPlikuIni);Zwolnienie zasobów to: Ini.Free;Prawidłowy blok kodu, korzystającego z pliku Ini powinien wyglądać tak: Ini := TIniFile.Create(ExtractFilePath(Application.ExeName)+'Ustawienia.ini'); // tworzymy plik Ini w katalogu z aplikacją pod nazwą Ustawienia.Ini try // tu odczytujemy, zapisujemy w pliku finally Ini.Free; // zwolnij zasoby end; Pozwala nam to uniknąć nieciekawych sytuacji, gdyby odczyt/zapis danych nie przebiegł poprawnie nasz kod nie będzie powodował tzw. memory leak'ów. ODCZYT / ZAPIS Najpierw struktura pliku Ini. Otóż przykładowo może wyglądać tak: [Sekcja] Nazwa=Wartość InnaNazwa=Wartość [InnaSekcja] Nazwa=Wartość ZupełnieInnaNazwa=InnaWartość Widać więc, że mamy podział na sekcje zawierające wartości, do których mamy przypisane nazwy. Odczyt danych to: ZmiennaBoolean := Ini.ReadBool(Sekcja, Nazwa, WartośćDomyślnaBoolean); ZmiennaDatetime := Ini.ReadDate(Sekcja, Nazwa, WartośćDomyślnaDateTime); ZmiennaDatetime := Ini.ReadDateTime(Sekcja, Nazwa, WartośćDomyślnaDateTime); ZmiennaFloat := Ini.ReadFloat(Sekcja, Nazwa, WartośćDomyślnaFloat); ZmiennaInteger := Ini.ReadInteger(Sekcja, Nazwa, WartośćDomyślnaInteger); ZmiennaString := Ini.ReadString(Sekcja, Nazwa, WartośćDomyślnaString); ZmiennaDatetime := Ini.ReadTime(Sekcja, Nazwa, WartośćDomyślnaDateTime); WartośćDomyślnaXXX oznacza wartość, która zostanie przypisana wartości zwracanej przez funkcję w wypadku gdyby, nie możnabyło odczytać tej wartości z pliku Ini. Zapis wygląda podobnie: Ini.WriteBool(Sekcja, Nazwa, WartośćBoolean); Ini.WriteDate(Sekcja, Nazwa, WartośćDateTime); Ini.WriteDateTime(Sekcja, Nazwa, WartośćDateTime); Ini.WriteFloat(Sekcja, Nazwa, WartośćFloat); Ini.WriteInteger(Sekcja, Nazwa, WartośćInteger); Ini.WriteString(Sekcja, Nazwa, WartośćString); Ini.WriteTime(Sekcja, Nazwa, WartośćDateTime); Jeśli chcemy sprawdzić czy dana sekcja istnieje w pliku Ini to if Ini.SectionExists(Sekcja) then ....Do sprawdzenia czy istnieje wartość dla danej nazwy w określonej sekcji if Ini.ValueExists(Sekcja, Nazwa) then ....Usunięcie Nazwy wraz z jej wartością Ini.DeleteKey(Sekcja, Nazwa);Aby usunąć całą sekcję z pliku używamy Ini.EraseSection(Sekcja);Gdy niewiemy jakie mamy sekcje w pliku to najpierw deklarujemy var Lista : TStringList;potem tworzymy Lista := TStringList.Create;wkońcu odczytujemy sekcje Ini.ReadSections(Lista);lub nazwy wartości w sekcji Ini.ReadSection(Sekcja, Lista);czy też wartości w sekcji |