Using INI Files/de

From Lazarus wiki

العربية (ar) Deutsch (de) English (en) español (es) suomi (fi) français (fr) русский (ru) 中文(中国大陆)‎ (zh_CN)

Zurück zu den Zusätzlichen Informationen.


INI-Dateien

Basisinformation

INI-Dateien können benutzt werden, um grundlegende Benutzereinstellungen einfach zu speichern. Mit der Unit INIfiles und der Klasse TINIFile können Sie ganz einfach mit existierenden INI-Dateien umgehen. Sie finden diese Unit in der FCL.

INI-Dateien

INI-Dateien verwenden eckige Klammern um Sektionen zu erzeugen und zu kennzeichnen. Diese Sektionen enthalten Schlüsselworte und Werte. Ein Schlüsselwort und sein zugehöriger Wert werden durch ein Gleichheitszeichen (=) voneinander getrennt (Schlüssel=Wert). Die Namen der Sektionen stehen in eckigen Klammern ([Section]). INI-Dateien werden seltener zum Speichern von Zeichenketten verwendet als XML-Dateien, weil die INI-Dateien nicht so gut mit umfangreichen Zeichenketten zurechtkommen.

Beispiel für das Lesen einer INI-Datei

Die nachfolgende Konsolenanwendung zeigt Ihnen, wie Sie INI-Dateien lesen können. Um dies auszutesten, sollten Sie zuerst eine INI-Datei namens "C:\DB.ini" erzeugen. Diese enthält eine Sektion names [INIDB] und die folgenden Schlüsselworte und Werte:

Author=Adam
Pass=
DBFile=C:\Money.dat

Nun kommen wir zum Code..

Program Project1;

{$mode objfpc}{$H+}

Uses
  Classes, SysUtils, INIFiles;

Var
 INI:                  TINIFile;
 Author, Pass, DBFile: String;
 PassEnter:            String;

begin
  INI    := TINIFile.Create('C:\DB.ini');
  Author := INI.ReadString('INIDB', 'Author', '');
  Pass   := INI.ReadString('INIDB', 'Pass', '');
  DBFile := INI.ReadString('INIDB', 'DBFile', '');
  if Pass <> '' then begin
    Writeln('Password Required');
    Repeat
      Readln(PassEnter);
      if PassEnter <> Pass then Writeln('Wrong Password !');
    until PassEnter = Pass;
    Writeln('Correct Password');
  end;
  Writeln('Author:   ' + Author);
  Writeln('File:     ' + DBFile);
  Writeln('Password: ' + Pass);
  Readln;
end.

Wichtige Objekte

In der Klasse TINIFile gibt es viele verschiedene Eigenschaften, Prozeduren und Funktionen.

CaseSensitive - diese Eigenschaft legt fest, ob Schlüssel und Sektionen die Groß-/Kleinschreibung berücksichtigen, laut Vorgabe nicht.

ReadString - erwartet 3 konstante Parameter. Erstens die zu durchsuchende Sektion. Zweitens das gesuchte Schlüsselwort. Drittens: ein String als Vorgabewert, falls der Schlüssel und/oder die gesuchte Sektion nicht gefunden wird.

WriteString - erwartet ebenfalls 3 konstante Parameter. Erstens die Sektion. Zweitens der Schlüssel und zuletzt der Wert. Falls Schlüssel und Sektion bereits existieren, wird der Schüssel mit dem neuen Wert überschrieben.

ReadSections - erlaubt Ihnen, die Sektionen aus einer INI-Datei auszulesen und in ein TStrings-Objekt zu kopieren (oder in eine TStringList mit dem AS Operator)

DeleteKey - entfernt einen existierenden Schlüssel aus einer angegebenen Sektion.

EraseSection - entfernt eine Sektion und alle ihre Daten.

Es gibt noch weitere Prozeduren und Funktionen, aber diese reichen für den Anfang aus.

Beispiel für ein Form

Dieses Beispiel Ladet am Anfang die Position des Forms und beim Beenden, wird diese gespeichert.

uses
  ..., IniFiles; 

// Koordinaten speichern.

procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
var
  ini: TIniFile;
begin
  ini := TIniFile.Create('config.ini');
  ini.WriteInteger('pos', 'Left',   Left);
  ini.WriteInteger('pos', 'Width',  Width);
  ini.WriteInteger('pos', 'Top',    Top);
  ini.WriteInteger('pos', 'Height', Height);
  ini.Free;
end;

// Koordinaten laden.

procedure TForm1.FormCreate(Sender: TObject);
var
  ini: TIniFile;
begin
  ini    := TIniFile.Create('config.ini');
  Left   := ini.ReadInteger('pos', 'Left',   100);
  Width  := ini.ReadInteger('pos', 'Width',  500);
  Top    := ini.ReadInteger('pos', 'Top',     50);
  Height := ini.ReadInteger('pos', 'Height', 400);
  ini.Free;
end;

Referenzdokumentation

Hier: Free Pascal Dokumentation über INI-Dateien

Siehe auch