Pliki INI

Strona g│≤wna

 

Niegdy╢ pliki INI stanowi│y podstawowe ╝r≤d│o informacji. Zapisywano w nich konfiguracje program≤w, sprzΩtu itp. Wraz z pojawieniem siΩ rejestr≤w pliki te straci│y na popularno╢ci, a to ze wzglΩdu na │atwo╢µ dokonywania w nich zmian - wystarczy│ edytor tekstu. Jednak┐e czasem u┐ycie plik≤w INI jest jedynym rozwi▒zaniem i dlatego postanowi│em napisaµ ten artyku│, aby przybli┐yµ ich sylwetkΩ. 

Pierwszym krokiem jaki musisz wykonaµ do dodanie do listy uses Twojego modu│u s│owa INIFiles. W poni┐szym przyk│adzie przedstawi│em przyk│ad zapisania do pliku INI warto╢ci z pola Edit1, Edit2. Przeanalizuj przyk│ad, a p≤╝niej przeczytaj obja╢nienie.

procedure TForm1.Button1Click(Sender: TObject);
var
  INI : TINIFile;
begin
  try
    INI := TINIFile.Create('C:\moj.ini');
    INI.WriteString('Nazwiska', '01' ,Edit1.Text);
    INI.WriteInteger('Oceny', '01', StrToInt(Edit2.Text));
  finally
    INI.Free;
  end;
end;

Na samym pocz▒tku stworzona zosta│a zmienna INI. W tej zmiennej jest zawarta informacja o ╢cie┐ce w kt≤rej zapisany bΩdzie plik INI.
NastΩpnie informacja z komponentu Edit1 zapisana zostaje do pliku przy pomocy s│owa WriteString. Pierwszym parametrem tej procedury jest nazwa sekcji ( nazwa g│≤wna zawarta w nawiasach ). NastΩpnym parametrem jest nazwa zapisanej warto╢ci, a ostatnim sama warto╢µ ( w tym wypadku tekst komponentu Edit1 ). NastΩpna linia to zapisywanie warto╢ci typu Integer. Budowa samej procedury jest taka sama. 
Zwr≤µ uwagΩ na zastosowanie s│≤w
try..finally. W ten spos≤b mo┐esz byµ pewny, ┐e niezale┐nie od tego czy wyst▒pi wyj▒tek, czy te┐ nie pamiΩµ dla zmiennej zostanie zwolniona. A jak odczytaµ warto╢ci z plik≤w INI. Tak:

procedure TForm1.Button2Click(Sender: TObject);
var
 INI : TINIFile;
 S : String;
 I : Integer;
begin
 try
   INI := TINIFile.Create('c:\moj.ini');
   S := INI.ReadString('Nazwiska','01','');
   I := INI.ReadInteger('Oceny','01',0);

   ShowMessage(Format('Ucze± "%s" dosta│ ocenΩ "%d"',[S, I]));
 finally
   INI.Free;
 end;
end;

Budowa jest podobna. W zmiennych S, I zostaj▒ wczytane warto╢ci. Pierwszy parametr to nazwa sekcji, drugi warto╢ci, a trzeci parametr zawiera warto╢µ domy╢ln▒ tzn. program bΩdzie wy╢wietla│ tΩ warto╢µ w wypadku gdy sekcja, warto╢µ nie istniej▒. 

To tyle je┐eli chodzi o podstawy zapisywania warto╢ci do plik≤w INI. W tabeli poni┐ej przedstawi│em inne metody raz z ich opisem. 

WriteString, ReadString Odczytuje lub zapisuje warto╢µ typu String.
WriteInteger, ReadInteger Odczytuje lub zapisuje warto╢µ typu Integer.
WriteBool, ReadBool Odczytuje lub zapisuje warto╢µ Boolowsk▒. INI.WriteBool(
'Ogolne','Konfig',True) = True
WriteFloat, ReadFloat Zapisuje lub odczytuje warto╢µ zmienn▒ przecinkow▒ typu Double
WriteDateTime, ReadDateTime Odczytuje lub zapisuje aktualn▒ datΩ.
DeleteKey Usuwa dan▒ warto╢µ.
INI.DeleteKey('Ogolne','Imie');
ReadSections Zwraca wszystkie sekcje danego pliku w postaci warto╢ci TStrings. 
EraseSection Usuwa dan▒ sekcje i pod klucze z ni▒ zwi▒zane.
ValueExists Sprawdza czy dana warto╢µ istnieje.
INI.ValueExists('Ogolne','Imie');
SectionExists Zwraca warto╢µ True je┐eli sekcja o podanej nazwie istnieje.

My╢lΩ, ┐e wyczerpa│em temat dotycz▒cy plik≤w INI. Je┐eli mimo to macie jakie╢ pytania to piszcie:

boduch@poland.com

Adam Boduch