Tech-Ecke / Delphi Inhalt /  Initialisierungsdateien (Ini-Datei)

 

     Initialisierungsdateien (Ini-Datei )

 

   Grundlegendes

Die Initialisierungsdateien, kurz Ini genannt, dient dazu, um Einstellungen und Variable beim Beenden einer Anwendungen zu sichern. Diese Informationen können dann beim nächsten Start der Anwendung wieder ausgelesen und genutzt werden. Diese Vorgehensweise ist eigentlich ein Relikt aus alten Tagen (vor Win95), denn heutzutage hinterlegt man diese Informationen in der Registry. Dies mach insbesondere dann Sinn, wenn man nicht genau weiß, ob der Anwender volle zugriffsrechte auf den Ordner hat, indem die Anwendung ausgeführt werden soll (z.B. administrierte Firmen-PC's). Nichtsdestotrotz, hat die Ini-Datei aber auch noch heute einen gewissen Charme. Da es sich bei einer Ini-Datei im Grunde um eine simple Textdatei handelt, lässt sie sich mit jedem Texteditor öffnen und bearbeiten.

   Erstellen und schreiben in eine Ini-Datei

Sinniger weise schreibt man die benötigten Information beim Beenden der Anwendung in die Ini-Datei. Hier bietet sich das Ereignis OnClose der entsprechenden Haupt-Form an. Ist zu diesem Zeitpunkt noch keine Ini-Datei vorhanden, so wird diese automatisch erstellt. Hier mal zunächst ein Beispiel, um den Textinhalt einer TEdit in einer Ini zu sichern:

   

var ini: TIniFile;   // benötigt IniFiles in Uses !


   
ini:=TIniFile.create(
'C:\Einstellungen.ini');
try
 
  Ini.WriteString('Text_aus_Edit1','Text',Edit1.Text);
finally
    Ini.Free;
end;

 

   Auslesen der Ini-Datei

Sinniger weise liest man die Ini-Datei beim Hauptform-Ereignis OnShow, OnCreate und dergleichen aus, aber auch das Auslesen zu einem späterem Zeitpunkt ist jeder Zeit möglich.

   

var ini: TIniFile;   // benötigt IniFiles in Uses !


   
ini:=TIniFile.create(
'C:\Einstellungen.ini');
try
 
  Edit1.Text := Ini.ReadString('Text_aus_Edit1','Text','');
   
// zwischen den '' am Ende kann ein Defaulttext angegeben werden wenn das auslesen fehlschlagt
finally
    Ini.Free;
end;

 

   Näheres und weitere Möglichkeiten

In dem oben gezeigten Beispiel wird einmal über WriteString der Text aus Edit1 in die initialisierte Ini geschrieben und dann über ReadString wieder ausgelesen und zurück in das Edit1 geschrieben. Die erste Angabe in der Klammer (im Beispiel: 'Text_aus_Edit1') ist der Bezeichner der Einstellungsgruppe, welcher in der Ini zwischen den Rechteckklammern steht und frei wählbar ist. Die zweite Angabe (im Beispiel: 'Text') bezeichnet die Einstellung als solches und ist ebenfalls frei wählbar. Beide Angabe müssen jedoch für die aktuelle Ini eindeutig sein und sich beim Schreiben durch Write und dem Lesen durch Read natürlich decken.

Wie die Namensgebung im Beispiel schon vermuten lässt, lassen sich mit Write/ReadString nur Daten vom Typ String verarbeiten. Weitere Möglichkeiten (nur die wichtigsten) sind:

Write/ReadBool:

  Ini.WriteBool('Haken','Checked',CheckBox1.Checked);        <->        CheckBox1.Checked := Ini.ReadBool('Haken','Checked',true);
// Das 'true' gibt an, dass der Haken gesetzt wird, wenn das lesen fehl schlägt Mit der Angabe 'false' würde er nicht gesetzt werden.
 

Write/ReadInteger

  Ini.WriteInteger('GanzZahl','Wert',Zahl);        <->       Zahl := Ini.ReadInteger('GanzZahl','Wert',0);
// Der Wert am Ende (hier 0) wird zugewiesen, wenn das Lesen fehlschlagt
 

Write/ReadFloat

  Ini.WriteFloat('GleitKommaZahl','Wert',IntVariable);        <->        CheckBox1.Checked := Ini.ReadFloat('GleitKommaZahl','Wert',0);
// Der Wert am Ende (hier 0) wird zugewiesen, wenn das Lesen fehlschlagt
 

 

Die Option Drucken funktioniert erst ab Netscape V4.0 bzw. I-Explorer 5.0 !

[letzte Aktualisierung 09.02.2009]