Sign in Join
Wiki copytemporary

Using INI Files/de: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11Zurück zu den [[Additional information/de|Zusätzlichen Informationen]].\
22
33==INI-Dateien==
44
55### Basisinformation
66
77INI-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.
88
99### INI-Dateien
1010
1111INI-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.
1212
1313### Beispiel für das Lesen einer INI-Datei
1414
1515Die 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:
1616
17-`Author=Adam`\
18-`Pass=`\
19-`DBFile=C:\Money.dat`\
17+```text
18+Author=Adam
19+Pass=
20+DBFile=C:\Money.dat
21+```
2022
2123Nun kommen wir zum Code..
2224
2325``` pascal
2426Program Project1;
2527
2628{$mode objfpc}{$H+}
2729
2830Uses
2931 Classes, SysUtils, INIFiles;
3032
3133Var
3234 INI: TINIFile;
3335 Author, Pass, DBFile: String;
3436 PassEnter: String;
3537
3638begin
3739 INI := TINIFile.Create('C:\DB.ini');
3840 Author := INI.ReadString('INIDB', 'Author', '');
3941 Pass := INI.ReadString('INIDB', 'Pass', '');
4042 DBFile := INI.ReadString('INIDB', 'DBFile', '');
4143 if Pass <> '' then begin
4244 Writeln('Password Required');
4345 Repeat
4446 Readln(PassEnter);
4547 if PassEnter <> Pass then Writeln('Wrong Password !');
4648 until PassEnter = Pass;
4749 Writeln('Correct Password');
4850 end;
4951 Writeln('Author: ' + Author);
5052 Writeln('File: ' + DBFile);
5153 Writeln('Password: ' + Pass);
5254 Readln;
5355end.
5456```
5557
5658### Wichtige Objekte
5759
5860In der Klasse TINIFile gibt es viele verschiedene Eigenschaften, Prozeduren und Funktionen.
5961
6062**CaseSensitive** - diese Eigenschaft legt fest, ob Schlüssel und Sektionen die Groß-/Kleinschreibung berücksichtigen, laut Vorgabe nicht.
6163
6264**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.
6365
6466**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.
6567
6668**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)
6769
6870**DeleteKey** - entfernt einen existierenden Schlüssel aus einer angegebenen Sektion.
6971
7072**EraseSection** - entfernt eine Sektion und alle ihre Daten.
7173
7274Es gibt noch weitere Prozeduren und Funktionen, aber diese reichen für den Anfang aus.
7375
7476### Beispiel für ein Form
7577
7678Dieses Beispiel Ladet am Anfang die Position des Forms und beim Beenden, wird diese gespeichert.
7779
7880``` pascal
7981uses
8082 ..., IniFiles;
8183
8284// Koordinaten speichern.
8385
8486procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
8587var
8688 ini: TIniFile;
8789begin
8890 ini := TIniFile.Create('config.ini');
8991 ini.WriteInteger('pos', 'Left', Left);
9092 ini.WriteInteger('pos', 'Width', Width);
9193 ini.WriteInteger('pos', 'Top', Top);
9294 ini.WriteInteger('pos', 'Height', Height);
9395 ini.Free;
9496end;
9597
9698// Koordinaten laden.
9799
98100procedure TForm1.FormCreate(Sender: TObject);
99101var
100102 ini: TIniFile;
101103begin
102104 ini := TIniFile.Create('config.ini');
103105 Left := ini.ReadInteger('pos', 'Left', 100);
104106 Width := ini.ReadInteger('pos', 'Width', 500);
105107 Top := ini.ReadInteger('pos', 'Top', 50);
106108 Height := ini.ReadInteger('pos', 'Height', 400);
107109 ini.Free;
108110end;
109111```
110112
111113### Referenzdokumentation
112114
113115Hier: [Free Pascal Dokumentation über INI-Dateien](http://lazarus-ccr.sourceforge.net/docs/fcl/inifiles/index.html)
114116
115117## Siehe auch
116118
117119- [[XML Tutorial/de|XML Tutorial]]
118120
119121---
120122*From the Free Pascal wiki, page "Using INI Files/de", as it stood on 2020-04-09 after a change by Mathias, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history