Using INI Files/de: what changed
Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.
| Old | New | Line | |
|---|---|---|---|
| 1 | 1 | Zurück zu den [[Additional information/de|Zusätzlichen Informationen]].\ | |
| 2 | 2 | ||
| 3 | 3 | ==INI-Dateien== | |
| 4 | 4 | ||
| 5 | 5 | ### Basisinformation | |
| 6 | 6 | ||
| 7 | 7 | 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. | |
| 8 | 8 | ||
| 9 | 9 | ### INI-Dateien | |
| 10 | 10 | ||
| 11 | 11 | 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. | |
| 12 | 12 | ||
| 13 | 13 | ### Beispiel für das Lesen einer INI-Datei | |
| 14 | 14 | ||
| 15 | 15 | 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: | |
| 16 | 16 | ||
| 17 | - | ||
| 18 | - | ||
| 19 | - | ||
| 17 | + | ```text | |
| 18 | + | Author=Adam | |
| 19 | + | Pass= | |
| 20 | + | DBFile=C:\Money.dat | |
| 21 | + | ``` | |
| 20 | 22 | ||
| 21 | 23 | Nun kommen wir zum Code.. | |
| 22 | 24 | ||
| 23 | 25 | ``` pascal | |
| 24 | 26 | Program Project1; | |
| 25 | 27 | ||
| 26 | 28 | {$mode objfpc}{$H+} | |
| 27 | 29 | ||
| 28 | 30 | Uses | |
| 29 | 31 | Classes, SysUtils, INIFiles; | |
| 30 | 32 | ||
| 31 | 33 | Var | |
| 32 | 34 | INI: TINIFile; | |
| 33 | 35 | Author, Pass, DBFile: String; | |
| 34 | 36 | PassEnter: String; | |
| 35 | 37 | ||
| 36 | 38 | begin | |
| 37 | 39 | INI := TINIFile.Create('C:\DB.ini'); | |
| 38 | 40 | Author := INI.ReadString('INIDB', 'Author', ''); | |
| 39 | 41 | Pass := INI.ReadString('INIDB', 'Pass', ''); | |
| 40 | 42 | DBFile := INI.ReadString('INIDB', 'DBFile', ''); | |
| 41 | 43 | if Pass <> '' then begin | |
| 42 | 44 | Writeln('Password Required'); | |
| 43 | 45 | Repeat | |
| 44 | 46 | Readln(PassEnter); | |
| 45 | 47 | if PassEnter <> Pass then Writeln('Wrong Password !'); | |
| 46 | 48 | until PassEnter = Pass; | |
| 47 | 49 | Writeln('Correct Password'); | |
| 48 | 50 | end; | |
| 49 | 51 | Writeln('Author: ' + Author); | |
| 50 | 52 | Writeln('File: ' + DBFile); | |
| 51 | 53 | Writeln('Password: ' + Pass); | |
| 52 | 54 | Readln; | |
| 53 | 55 | end. | |
| 54 | 56 | ``` | |
| 55 | 57 | ||
| 56 | 58 | ### Wichtige Objekte | |
| 57 | 59 | ||
| 58 | 60 | In der Klasse TINIFile gibt es viele verschiedene Eigenschaften, Prozeduren und Funktionen. | |
| 59 | 61 | ||
| 60 | 62 | **CaseSensitive** - diese Eigenschaft legt fest, ob Schlüssel und Sektionen die Groß-/Kleinschreibung berücksichtigen, laut Vorgabe nicht. | |
| 61 | 63 | ||
| 62 | 64 | **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. | |
| 63 | 65 | ||
| 64 | 66 | **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. | |
| 65 | 67 | ||
| 66 | 68 | **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) | |
| 67 | 69 | ||
| 68 | 70 | **DeleteKey** - entfernt einen existierenden Schlüssel aus einer angegebenen Sektion. | |
| 69 | 71 | ||
| 70 | 72 | **EraseSection** - entfernt eine Sektion und alle ihre Daten. | |
| 71 | 73 | ||
| 72 | 74 | Es gibt noch weitere Prozeduren und Funktionen, aber diese reichen für den Anfang aus. | |
| 73 | 75 | ||
| 74 | 76 | ### Beispiel für ein Form | |
| 75 | 77 | ||
| 76 | 78 | Dieses Beispiel Ladet am Anfang die Position des Forms und beim Beenden, wird diese gespeichert. | |
| 77 | 79 | ||
| 78 | 80 | ``` pascal | |
| 79 | 81 | uses | |
| 80 | 82 | ..., IniFiles; | |
| 81 | 83 | ||
| 82 | 84 | // Koordinaten speichern. | |
| 83 | 85 | ||
| 84 | 86 | procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction); | |
| 85 | 87 | var | |
| 86 | 88 | ini: TIniFile; | |
| 87 | 89 | begin | |
| 88 | 90 | ini := TIniFile.Create('config.ini'); | |
| 89 | 91 | ini.WriteInteger('pos', 'Left', Left); | |
| 90 | 92 | ini.WriteInteger('pos', 'Width', Width); | |
| 91 | 93 | ini.WriteInteger('pos', 'Top', Top); | |
| 92 | 94 | ini.WriteInteger('pos', 'Height', Height); | |
| 93 | 95 | ini.Free; | |
| 94 | 96 | end; | |
| 95 | 97 | ||
| 96 | 98 | // Koordinaten laden. | |
| 97 | 99 | ||
| 98 | 100 | procedure TForm1.FormCreate(Sender: TObject); | |
| 99 | 101 | var | |
| 100 | 102 | ini: TIniFile; | |
| 101 | 103 | begin | |
| 102 | 104 | ini := TIniFile.Create('config.ini'); | |
| 103 | 105 | Left := ini.ReadInteger('pos', 'Left', 100); | |
| 104 | 106 | Width := ini.ReadInteger('pos', 'Width', 500); | |
| 105 | 107 | Top := ini.ReadInteger('pos', 'Top', 50); | |
| 106 | 108 | Height := ini.ReadInteger('pos', 'Height', 400); | |
| 107 | 109 | ini.Free; | |
| 108 | 110 | end; | |
| 109 | 111 | ``` | |
| 110 | 112 | ||
| 111 | 113 | ### Referenzdokumentation | |
| 112 | 114 | ||
| 113 | 115 | Hier: [Free Pascal Dokumentation über INI-Dateien](http://lazarus-ccr.sourceforge.net/docs/fcl/inifiles/index.html) | |
| 114 | 116 | ||
| 115 | 117 | ## Siehe auch | |
| 116 | 118 | ||
| 117 | 119 | - [[XML Tutorial/de|XML Tutorial]] | |
| 118 | 120 | ||
| 119 | 121 | --- | |
| 120 | 122 | *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).* |
