Using INI Files/de
│
العربية (ar) │
Deutsch (de) │
English (en) │
español (es) │
suomi (fi) │
français (fr) │
polski (pl) │
русский (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