Difference between revisions of "Using INI Files/de"
m (→INI Dateien) |
|||
(11 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
{{INI Files}} | {{INI Files}} | ||
− | ==INI Dateien== | + | <br> |
+ | Zurück zu den [[Additional information/de|Zusätzlichen Informationen]].<br> | ||
+ | <br> | ||
+ | __TOC__ | ||
+ | <br> | ||
+ | ==INI-Dateien== | ||
===Basisinformation=== | ===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 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=== |
− | INI-Dateien verwenden eckige Klammern um '''Sektionen''' zu kennzeichnen. | + | 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). | |
− | INI-Dateien | + | 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=== | + | ===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: | |
− | Sie | ||
Author=Adam | Author=Adam | ||
Line 20: | Line 25: | ||
Nun kommen wir zum Code.. | Nun kommen wir zum Code.. | ||
− | < | + | |
+ | <syntaxhighlight lang=pascal> | ||
Program Project1; | Program Project1; | ||
Line 26: | Line 32: | ||
Uses | Uses | ||
− | Classes,SysUtils,INIFiles; | + | Classes, SysUtils, INIFiles; |
Var | Var | ||
− | INI:TINIFile; | + | INI: TINIFile; |
− | Author,Pass,DBFile:String; | + | Author, Pass, DBFile: String; |
− | PassEnter:String; | + | PassEnter: String; |
begin | begin | ||
− | INI := TINIFile.Create('C:\DB.ini'); | + | INI := TINIFile.Create('C:\DB.ini'); |
− | Author := INI.ReadString('INIDB','Author',''); | + | Author := INI.ReadString('INIDB', 'Author', ''); |
− | Pass := INI.ReadString('INIDB','Pass',''); | + | Pass := INI.ReadString('INIDB', 'Pass', ''); |
− | DBFile := INI.ReadString('INIDB','DBFile',''); | + | DBFile := INI.ReadString('INIDB', 'DBFile', ''); |
− | if Pass <> '' then | + | if Pass <> '' then begin |
− | |||
Writeln('Password Required'); | Writeln('Password Required'); | ||
Repeat | Repeat | ||
Readln(PassEnter); | Readln(PassEnter); | ||
− | if | + | if PassEnter <> Pass then Writeln('Wrong Password !'); |
− | until | + | until PassEnter = Pass; |
Writeln('Correct Password'); | Writeln('Correct Password'); | ||
end; | end; | ||
− | Writeln('Author : '+Author); | + | Writeln('Author: ' + Author); |
− | Writeln('File : '+DBFile); | + | Writeln('File: ' + DBFile); |
− | Writeln('Password : '+Pass); | + | Writeln('Password: ' + Pass); |
Readln; | Readln; | ||
end. | end. | ||
− | </ | + | </syntaxhighlight> |
+ | |||
===Wichtige Objekte=== | ===Wichtige Objekte=== | ||
In der Klasse TINIFile gibt es viele verschiedene Eigenschaften, Prozeduren und Funktionen. | In der Klasse TINIFile gibt es viele verschiedene Eigenschaften, Prozeduren und Funktionen. | ||
Line 62: | Line 68: | ||
'''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. | '''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 | + | '''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. | '''DeleteKey''' - entfernt einen existierenden Schlüssel aus einer angegebenen Sektion. | ||
Line 68: | Line 74: | ||
'''EraseSection''' - entfernt eine Sektion und alle ihre Daten. | '''EraseSection''' - entfernt eine Sektion und alle ihre Daten. | ||
− | Es gibt noch weitere Prozeduren und Funktionen aber diese | + | 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. | ||
+ | |||
+ | <syntaxhighlight lang=pascal> | ||
+ | uses | ||
+ | ..., IniFiles; | ||
− | === | + | // Koordinaten speichern. |
− | Hier: [http://lazarus-ccr.sourceforge.net/docs/fcl/inifiles/index.html | + | |
− | + | 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; | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ===Referenzdokumentation=== | ||
+ | Hier: [http://lazarus-ccr.sourceforge.net/docs/fcl/inifiles/index.html Free Pascal Dokumentation über INI-Dateien] | ||
==Siehe auch== | ==Siehe auch== | ||
− | * [[XML Tutorial | + | * [[XML Tutorial/de|XML Tutorial]] |
− | |||
− |
Latest revision as of 16:12, 9 April 2020
│
العربية (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