Delphi – Smeštanje podešavanja programa u .ini fajl (III deo)

Nakon što smo se upoznali kako se čitaju ključevi iz INI fajlova, objasnićemo i kako se vrši upis podataka u INI fajlove. Najidealnije mesto za snimanje informacija o programu je na zatvaranju programa, tj. unutar događaja OnClose glavne forme. Pre nego što se aplikacija prekine, zapisaćemo trenutnu poziciju prozora i informaciju o poslednjem korisniku:


procedure TForm1.FormClose
(Sender: TObject; var Action: TCloseAction);
var
IniFile : TIniFile;
begin
IniFile := TIniFile.Create
(ChangeFileExt(Application.ExeName,’ini’));

IniFile.WriteString
(‘Poslednji’, ‘Korisnik’, ‘Taj_i_Taj’);
IniFile.WriteDate
(‘Poslednji’, ‘Datum’, Date);

With IniFile, Form1 do
begin
WriteInteger(‘Polozaj’,’Top’, Top);
WriteInteger(‘Polozaj’,’Left’, Left);
WriteInteger(‘Polozaj’,’Width’, Width);
WriteInteger(‘Polozaj’,’Height’, Height);
end;

IniFile.Free;
end;

Postoji nekoliko metoda koje služe za operaciju sa celim sekcijama unutar INI fajlova. Na primer metoda EraseSection služi za brisanje cele jedne sekcije unutar INI fajla. Metode ReadSection i ReadSections popunjavaju objekat TStringList sa nazivima svih sekcija (i nazivima ključeva) u INI fajlu. Da napomenemo i to da slična klasa postoji i u registry unit-u – klasa TRegIniFile – klasa koja omogućava laki pristup sistemskoj registracionoj bazi i bez potrebe za poznavanjem strukture samog Registry-ja. Klasa TRegIniFile koristi sličan funkcionalni pristup Registry bazi, otprilike kako to radi i TIniFile za pristup INI fajlu.

Klasa TIniFile koristi Windows API interfejs, koji nameće limit od 64KB po INI fajlu. Ukoliko vam je potrebno da sačuvate više od 64KB podataka, trebalo bi da koristite klasu TMemIniFile, koja nema ovakav limit. Još jedan problem koji može da iskrsne je ako imate sekcije koje sadrže vrednosti u količini većoj od 8 kilobajta. Metod ReadSection koristi API funkciju GetPrivateProfileString sa baferom od 8 kilobajta. Jedan od načina da rešite problem jeste da napišete sopstvenu verziju ReadSection metode. Činjenica da svako može da pristupi i modifikuje INI fajlove govori da integritet podataka unutar INI fajlova ne može biti garantovan. Ipak, možda je za utehu i to što se i baza Registry takođe može modifikovati, pa zato nema velike prednosti u ovom pogledu.

Pratite Krstaricu na www.krstarica.com