Delphi (2.) - Práce se soubory, *.ini soubory a registry

Zde Vám vysvětlím, jak používat obyčejné soubory, INI soubory a registry systému a taky podrobně popíšu, jak na ně.

INI soubory jsou, sice podle někoho(dříve i podle mně) zastaralé soubory pro ukládání konfiguračních inofmrací. Než Vás zasvětím do tajů používání INI souborů, tak vám názorně vyložím výhody proti jiným typům ukládání konfiguračních informací. Konfiguraci programu můžeme uložit to těchto čtyřech míst:

1) INI soubor
+ Jeden relativně malý soubor pojme přehledně všechny konfigurační informace.
+ Vcelku jednoduchý postup pro odinstalování.
+ Jednoduché programování.

2) Obyčejný soubor
- Programátorsky složité
+ jinak snad bez problémů.

3) Registr WINDOWS
- 95% chyb windows je způsobeno přeplácanými registry. A uvidíte jak si je zasekáte při ladění programu.
- Musíte už při programování myslet na UNINSTAL program, k dobré etice patří odebrat z registru to co jsem tam dal, ale většinou se mi to nepovede.
+ směřování všech informací různých programů do jedné 'centrály'

4) Databáze
- Hodí se pro uchování velmi velkého množství dat stejného typu.

Obyčejný soubor

var seznam: TextFile;
// Možnos deklarovat jako seznam: File of ... (File of integer, File of string, File of boolean ...) // Přiřadí ke jménu souboru cestu k souboru AssignFile(seznam,'data.dat'); // Zakládá a současně otevírá nový soubor Rewrite(seznam); // Otevívá již existující soubor Reset(seznam); // Otevírá soubor pro přidání záznamu na konec; Append(seznam); // Zapíše záznam do souboru Write(seznam,'informace'); // Zapíše do souboru a skočí na další řádek Writeln(seznam,'informace'); // Zapíše na konec souboru Flush(seznam); // Přečte záznam do proměnné Read(seznam,promenna); // Přečte záznam do proměnné a skočí v souboru na další řádek Readln(seznam,promenna); // Zavře dříve otevřený soubor Closefile(seznam);

Dále existují dvě procedury LoadFromFile a SaveToFile, jejichž použití je mnohem jednodušší. Jak vidíte, žádné proměnné, deklarace ani speciální procedury:

  Memo.Lines.LoadFromFile('data.txt');
  Image.Picture.SaveToFile('obrazek.bmp');

INI soubor

uses IniFiles;

Var 
  DataFile: TIniFile;

begin
  DataFile := TIniFile.Create('data.ini'); // vytvoříme INI soubor

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.ini');

  // Zapíšeme string do INI souboru do První sekce k první položce
  DataFile.WriteString('Prvni sekce','Prvni polozka','informace'); 

  // Zapíšeme integer
  DataFile.WriteInteger('Prvni sekce','Druha polozka',123); 

  // Zapíšeme hodnotu boolean
  DataFile.Writebool('Druha sekce','Prvni polozka',true); 

  // čteme string
  PromnenaString := DataFile.ReadString('Prvni sekce','Prvni polozka','ERROR');

  // čteme integer
  PromnenaInteger := DataFile.ReadInteger('Prvni sekce','Druha polozka',0);

  // čteme boolean
  PromnenaBoolean := DataFile.ReadBool('Druha sekce','Prvni polozka',false);

  DataFile.Free;

Poslední parametr bude vrácen v případě neúspěchu. (Pokud se nepodaří najít sekci nebo položku). Výsledný soubor data.ini by měl vypadat asi takto:

[Prvni sekce]
Prvni polozka='informace'
Druha polozka=123

[Druha sekce]
Prvni polozka=true

Registr systému

uses
  Registry

var
  reg: TRegistry;
begin
  reg := TRegistry.Create;            // vytvori reg
  reg.RootKey := HKEY_CURRENT_USER;   // korenovy klic
  reg.OpenKey('\software\',true);     //otevre klic

  reg.WriteString('cti','ahoj');      // zapise string
  reg.WriteInteger('cti',123);        // zapíše integer
  reg.WriteBool('cti',true);          // zapíše boolean

  ShowMessage(reg.ReadString('cti')); // přečte string
  ShowMessage(reg.ReadInteger('cti'));// přečte integer
  ShowMessage(reg.ReadBool('cti'));   // přečte boolean

  reg.CloseKey;                       //zavre klic
  reg.Free;                           // uvolni reg
end;

Další příkazy pro práce se soubory

Další užitečné příkazy pro práci se soubory jsou zde: FileExist, DeleteFile, RenameFile, ChangeFileExt, ExtractFileName, ExtractFileDir, ExtractFileDrive, ExtractFilePath, ExtractRelativePath.

Vyšlo 17.08.2001, v blogu: 0 1 2 3 4 5 6 7 8

Děkuji, že jste se rozhodl(a) přečíst tento článek. Budu rád i za komentář. Pokud Vás tento článek zaujal a rádi byste jej doporučili ostatním, podpořte mně prosím tím, že věnujete minutku svého času a uděláte mi reklamu na linkuj.cz, vybrali.sme.sk či jagg.cz. Přeji příjemné čtení

Poslední články

Diskuse k blogu

spouštění s windows 
Jak mám do registrů "vecpat", aby se mi program spouštěl zároveň se startem windows? Děkuji za každou odpověď. 
Vložil: Kolcek (15.10.2008 17:28:43)
Přidání příspěvku
©PC-guru.cz 2000-2008 | Optimalizováno pro 1024*768