Práce s ini soubory - Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



Delphi

Práce s ini soubory

delphi_ini

14. března 2001, 00.00 | Chcete se svých Delphi programech používat ini soubory, a rozšířit je tak o možnost ukládání a načítání dat? Tento článek vám ukáže, jak na to.


Potřebovali jste si již někdy v Delphi programu uložit pozici formuláře, proměnné nebo cokoliv jiného ? Určitě ano. Jedna z možností je použití ini souborů a vzhledem k tomu, že windows práci s nimi co nejvíce zjednodušují, nejsou s nimi žádné komplikace. Tedy, dáme se do toho.

Nejprve si řekneme, jak takový soubor vypadá. Pokud jste opravdu ještě žádný neviděli, zavítejte do složky windows a otevřete si jakýkoliv *.ini soubor. Jak jste si jistě všimli, je rozdělen do částí, které jsou vždy v hranatých závorkách a následují proměnné, rovnítko a hodnota.
Hodnoty mohou být buť typu integer, string nebo boolean. Vytvoříme si tedy ukázkový program, který bude číst a zapisovat všechny tyto tři typy. Navíc si bude ještě pamatovat pozici a velikost furmuláře. Vytvořte si tedy nový projekt a do uses rovnou přidejte Inifiles. Dále vytvořte proměnnou DataFile:TINIFile; Následně na formulář přidejte 6 Labelů a pojemujte je následovně (doufám, že pojmenování je dosti srozumitelné, a již nemusím popisovat, co který Label bude ukazovat): xLabel, ylabel, HeightLabel, WidthLabel, IntLabel, StrLabel, BooLabel. Dále ještě vložte komponenty Edit (Name=StringEdit), SpinEdit a CheckBox.
Tím vkládání komponent naštěstí končí a začíná programování. Nejprve si tedy nějaký ini soubor musíme vytvořit. Vytvoříme si tedy proceduru OnCreate a do ní doplníme následující řádek:


  DataFile:=TiniFile.Create('data.dat');

Takto se nám soubor data.dat vytvoří v adresáři windows (pokud již existuje, pouze se otevře). Zřejmě ale nechcete mít v adresáři windows, ale na očích v adresáři programu, a proto řádek trochu pozměníme:


  DataFile:=TiniFile.Create
  ((ExtractFilePath(Application.exename))+'data.dat');

Před načítáním hodnot si vytvoříme ještě proceduru OnClose, do které vložíme následující řádek, který zajistí, aby se při ukončení programu taky soubor zavřel a uvolnil paměť.


  DataFile.Free;

Čtení proměnných poté provedeme funkcí ReadInteger, ReadString nebo ReadBool. První parametr je část ini souboru (použití různých částí je pouze pro zpřehlednění ini souboru, klidně můžeme dát všehcny proměnné do jedné, např. options), druhý je název proměnné v ini souboru a poslední je hodnota, která se do proměnné dosadí, pokud ini soubor neexistuje, nebo v něm patřičná proměnná není. Do procedury OnCreate tedy ještě doplníme následující řádky, které zajistí načtení všech potřebných proměnných:


  Form1.Left:=DataFile.ReadInteger('FormOptions','Left',100);
  Form1.Top:=DataFile.ReadInteger('FormOptions','Top',100);
  Form1.Width:=DataFile.ReadInteger('FormOptions','Width',100);
  Form1.Height:=DataFile.ReadInteger('FormOptions','Height',100);

  SpinEdit1.Value:=DataFile.ReadInteger('Other','TestInteger',123);
  StringEdit.Text:=DataFile.ReadString('Other','TestString','text');
  CheckBox1.Checked:=DataFile.ReadBool('Other','TestBoolean',false);

Tyto všechny hodnoty bychom měli ještě před ukončením aplikace uložit, k čemuž nám poslouží procedury WriteInteger, WriteString a WriteBool. Do procedury OnClose vložíme před DataFile.Free následující řádky, čímž toto zajistíme:

 
  DataFile.WriteInteger('FormOptions','Left',Form1.Left);
  DataFile.WriteInteger('FormOptions','Top',Form1.Top);
  DataFile.WriteInteger('FormOptions','Width',Form1.Width);
  DataFile.WriteInteger('FormOptions','Height',Form1.Height);

  DataFile.WriteInteger('Other','TestInteger',SpinEdit1.Value);
  DataFile.WriteString('Other','TestString',StringEdit.Text);
  DataFile.WriteBool('Other','TestBoolean',CheckBox1.Checked);

Nakonec vytvoříme proceduru OnConstrainedResize, do které přidáme kód, který nám zajistí, abychom viděli hodnoty Left, Top, Width a Height formuláře. Zde je:

 

  XLabel.Caption:='x: '+IntToStr(Form1.Left);
  YLabel.Caption:='y: '+IntToStr(Form1.Top);

  HeightLabel.Caption:='výška: '+IntToStr(Form1.Height);
  WidthLabel.Caption:='šířka: '+IntToStr(Form1.Width);

A to je vše. Velice jednoduché a proto výhodné. Po ukočení programu by měl ini soubor Data.dat vypadat nějak takto (samozřejmě, že hodnoty se budou lišit):


ZDE si můžete stáhnout zdrojáky dnes vytvořeného programu - 188 KB.

Tématické zařazení:

 » Rubriky  » Delphi  

 » Rubriky  » Windows  

 

 

 

Nejčtenější články
Nejlépe hodnocené články

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: