Difference between revisions of "Using INI Files/de"

From Lazarus wiki
Jump to navigationJump to search
m (→‎INI Dateien: updated)
 
(10 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 erzeugen und zu kennzeichnen. Diese Sektionen enthalten '''Schlüsselworte''' und '''Werte'''.
 
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).
 
Ein Schlüsselwort und sein zugehöriger Wert werden durch ein Gleichheitszeichen (=) voneinander getrennt (Schlüssel=Wert).
Line 11: Line 16:
 
INI-Dateien werden seltener zum Speichern von Zeichenketten verwendet als XML-Dateien, weil die INI-Dateien nicht so gut mit umfangreichen Zeichenketten zurechtkommen.
 
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===
  
Als erstes versuchen wir eine einfache Konsolenanwendung.
+
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 sollten zuerst eine INI-Datei namens '''DB.ini''' erzeugen und im Laufwerk C:\ speichern. Diese enthält eine Sektion names [INIDB] und die folgenden Schlüsselworte und Werte:
 
  
 
  Author=Adam
 
  Author=Adam
Line 21: Line 25:
 
   
 
   
 
Nun kommen wir zum Code..
 
Nun kommen wir zum Code..
<Delphi>
+
 
 +
<syntaxhighlight lang=pascal>
 
Program Project1;
 
Program Project1;
  
Line 27: 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
  begin
 
 
     Writeln('Password Required');
 
     Writeln('Password Required');
 
     Repeat
 
     Repeat
 
       Readln(PassEnter);
 
       Readln(PassEnter);
       if not PassEnter = Pass then Writeln('Wrong Password');
+
       if PassEnter <> Pass then Writeln('Wrong Password !');
     until(PassEnter = Pass);
+
     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.     
</Delphi>
+
</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 63: 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 Code)
+
'''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 69: 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 sind grundlegend.
+
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;
  
===Letzte Worte...===
+
// Koordinaten speichern.
Hier: [http://lazarus-ccr.sourceforge.net/docs/fcl/inifiles/index.html] können Sie alles über INI-Dateien lernen.
+
 
Bitte, wenn Sie können, stellen Sie weitere Informationen über INI-Dateien in Pascal hier ins Wiki!
+
procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
'''Bearbeiten Sie diesen Text nach eigenen Vorstellungen'''
+
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]]
 
 
[[Category:Tutorials]]
 

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

Siehe auch