U trendu

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 i preko mobilne aplikacije za Android i iPhone.