:Revision=3
:html
<<
128.127
IniFile-Objekt|IniFile
--
Das IP-Objekt IniFile erlaubt das Lesen und Schreiben von Daten aus bzw in Windows-Ini-Dateien.
>>
<<
128.127.1
Funktionen des IniFile-Objekts|Funktionen
--
>>
<<
128.127.1.1
IniFile.ReadString|ReadString
--
<!DEF>
function <!TW>INIFile.ReadString (sSection, sItem, sDefault : string) : string;
<!TXT>
Liefert den String, der im INI-File in der Sektion <!PW>sSection fr den Eintrag <!PW>sItem gespeichert ist.

Kann der Eintrag nicht gelesen werden, so wird <!PW>sDefault geliefert.

<!TXT>

Beispiel:
<!CODE>
var
  vsData : String;
Step
  // Stellt die zu Lesende oder Schreibende Ini Datei ein. Eine nicht
  // exisitierende Ini Datei wird beim Schreiben automatisch erstellt.
  // Schon existierende Dateien werden erweitert.
  INIFile.SetFileName('%PRG%\IPHelpExample.INI');
  // Liest einen String Wert aus der IniDatei
  vsData := INIFile.ReadString('SEC1', 'STRSEC1ITE1', 'Error');
  // Gibt den oben ausgelesenen Wert in der Debugging Anzeige aus.
  Debug.SHOW(1, 'Wert: ', vsData);
  System.SetValue(0);
end.
<!TXT>

>>
<<
128.127.1.2
IniFile.ReadReal|ReadReal
--
<!DEF>
function <!TW>INIFile.ReadReal (sSection, sItem : string; rDefault : real) : real;
<!TXT>
Liefert die Zahl, die im INI-File in der Sektion <!PW>sSection fr den Eintrag <!PW>sItem gespeichert ist.

Kann der Eintrag nicht gelesen werden, oder ist der Eintrag keine Zahl, so wird <!PW>rDefault geliefert.

Der Eintrag kann auch eine Hex-Zahl sein. Dann muss der Eintrag mit $ beginnen.

<!TXT>

Beispiel:
<!CODE>
var
  vrData : Real;
Step
  // Stellt die zu Lesende oder Schreibende Ini Datei ein. Eine nicht
  // exisitierende Ini Datei wird beim Schreiben automatisch erstellt.
  // Schon existierende Dateien werden erweitert.
  INIFile.SetFileName('%PRG%\IPHelpExample.INI');
  // Liest einen Real Wert aus der IniDatei
  vrData := INIFile.ReadReal('SEC1', 'REASEC1ITE1', 0);
  // Gibt den oben ausgelesenen Wert in der Debugging Anzeige aus.
  Debug.SHOW(1, 'Wert: ', vrData);
  System.SetValue(0);
end.
<!TXT>

>>
<<
128.127.1.3
IniFile.EOF|EOF
!128.127.3.2 - Beispiel INI Datei Lesen
--
<!DEF>
function <!TW>INIFile.EOF : real;
<!TXT>
Liefert <!RW>TRUE, wenn kein weiterer Eintrag in der Section mehr vorhanden ist.
>>
<<
128.127.1.4
IniFile.Name|Name
!128.127.3.2 - Beispiel INI Datei Lesen
--
<!DEF>
function <!TW>INIFile.Name : string;
<!TXT>
Liefert den Namen des aktuellen Eintrags der gelesenen Section.
(Den Teil vor dem '=')
>>
<<
128.127.1.5
IniFile.Value|Value
!128.127.3.2 - Beispiel INI Datei Lesen
--
<!DEF>
function <!TW>INIFile.Value : string;
<!TXT>
Liefert den Wert des aktuellen Eintrags der gelesenen Section
(Den Teil nach dem '=')
>>
<<
128.127.2
Prozeduren des IniFile-Objekts|Prozeduren
--
>>
<<
128.127.2.1
INIFile.WriteString|WriteString
!128.127.3.1 - Beispiel INI Datei Schreiben
--
<!DEF>
procedure <!TW>INIFile.WriteString (sSection, sItem, sWert : string);
<!TXT>
Schreibt den String <!PW>sWert in die Sektion <!PW>sSection fr den Eintrag <!PW>sItem.

Beispiel:
<!CODE>
IniFile.WriteString ('LetzterPrfling', 'Barcode', '12345678A87654321');
<!TXT>

Erzeugt im INI-File:
<!CODE>
[LetzterPrfling]
Barcode=12345678A87654321
<!TXT>
>>
<<
128.127.2.2
INIFile.WriteReal|WriteReal
!128.127.3.1 - Beispiel INI Datei Schreiben
--
<!DEF>
procedure <!TW>INIFile.WriteReal (sSection, sItem : string; rWert : real);
<!TXT>
Schreibt den Realwert <!PW>rWert in die Sektion <!PW>sSection fr den Eintrag <!PW>sItem.

Die Zahl wird dazu in einen String gewandelt (maximal 15 Stellen Genauigkeit).

Beispiel:
<!CODE>
IniFile.WriteString ('Konstanten', 'Ergebnis', 3*3+4*4);
<!TXT>

Erzeugt im INI-File:
<!CODE>
[Konstanten]
Ergebnis=25
<!TXT>
>>
<<
128.127.2.3
IniFile.EraseSection|EraseSection
--
<!DEF>
procedure <!TW>IniFile.EraseSection (sSection : string);
<!TXT>
Lscht die Sektion <!PW>sSection im INIFile.

<!TXT>

Beispiel:
<!CODE>
step
  // Stellt die zu Lesende oder Schreibende Ini Datei ein. Eine nicht
  // exisitierende Ini Datei wird beim Schreiben automatisch erstellt.
  // Schon existierende Dateien werden erweitert.
  INIFile.SetFileName('%PRG%\IPHelpExample.INI');
  // Lscht die angegebene Section aus der INI Datei.
  INIFile.EraseSection('SEC2');
  System.SetValue(0);
end.
<!TXT>

>>
<<
128.127.2.4
IniFile.SetFileName|SetFileName
!128.127.3.1 - Beispiel INI Datei Schreiben
!128.127.3.2 - Beispiel INI Datei Lesen
--
<!DEF>
procedure <!TW>INIFile.SetFileName (sFileName : string [; rAutoSynchronize : real]);
<!TXT>
Whlt eine Date als aktuelles Inifile aus

Default ist IPS_DATA.INI im Typdatenverzeichnis.

Ist <!PW>sFileName leer (''), so wird auf die Defaultdatei zurckgeschaltet.

 <!PW>sFileName darf Verzeichnisschablonen enthalten.

Ist <!PW>rAutoSynchronize <!RW>TRUE, so wird <i>vor jedem Lesezugriff</i> und <i>nach jedem Schreibzugriff</i> die Synchronisierung aufgerufen. Dies kann im Einzelfall ntig sein und ist bequemer, als jedesmal <!RW>Inifile.Synchronize aufzurufen. Als default (wenn nicht angegeben) ist <!PW>rAutoSynchronize <!RW>FALSE. 
>>
<<
128.127.2.5
IniFile.Load|Load
!128.127.3.2 - Beispiel INI Datei Lesen
--
<!DEF>
procedure <!TW>INIFile.Load (sSection);
<!TXT>
Liest die gesamt Section <!PW>sSection ein.

Die einzelnen Eintrge knnen dann ber <!RW>Inifile.First/<!RW>Next/<!RW>Name/<!RW>Value abgefragt werden.

Wenn <!PW>sSection leer ist (''), dann wird die Liste der im INI-File vorhandenen Sectionen eingelesen.
Die Daten in der Section knnen ber <!RW>Inifile.First/<!RW>Inifile.Name abgefragt werden.
>>
<<
128.127.2.6
IniFile.First|First
!128.127.3.2 - Beispiel INI Datei Lesen
--
<!DEF>
procedure <!TW>INIFile.First;
<!TXT>
Setzt den internen Zeiger auf den ersten Eintrag der zuvor gelesenen Section.
>>
<<
128.127.2.7
IniFile.Next|Next
!128.127.3.2 - Beispiel INI Datei Lesen
--
<!DEF>
procedure <!TW>INIFile.Next;
<!TXT>
Setzt den internen Zeiger auf den nchsten Eintrag der zuvor gelesenen Section.
>>

<<
128.127.2.8
IniFile.Synchronize|Synchronize
--
<!DEF>
procedure <!TW>INIFile.Synchronize;
<!TXT>
Erzwingt eine Synchronisierung des internen Puffers von Windows und der externen Datei.

Normalerweise geschieht dies im Hintergrund ohne speziellen Aufruf.

Wenn es wirklich notwendig ist, Datei und Puffer immer synchron zu halten, sollt <!RW>SetFilename mit <!SW>rAutoSynchronize = <!RW>True aufgerufen werden.
>>

<<
128.127.2.9
IniFile.EraseFile|EraseFile
--
<!DEF>
procedure <!TW>INIFile.EraseFile;
<!TXT>
Lscht das INI-File in der externen Datei.

<!TXT>

Beispiel:
<!CODE>
step
  // Stellt die zu Lesende oder Schreibende Ini Datei ein. Eine nicht
  // exisitierende Ini Datei wird beim Schreiben automatisch erstellt.
  // Schon existierende Dateien werden erweitert.
  INIFile.SetFileName('%PRG%\IPHelpExample.INI');
  // Lscht die angegebene INI Datei.
  INIFile.EraseFile;
  System.SetValue(0);
end.
<!TXT>

>>
<<
128.127.3
Beispiele mit INI Dateien|Beispiele
--
>>
<<
128.127.3.1
Beispiel INI Datei Schreiben|INI Datei Schreiben
!128.127.2.4 - Procedure SetFileName
!128.127.2.1 - Procedure WriteString
!128.127.2.2 - Procedure WriteReal
--

Mit dem nachfolgendem Beispiel kann eine INI Datei mit beliebigen Eintrgen erzeugt oder erweitert werden.

<!TXT>

Beispiel:
<!CODE>
var
  vrSectionIndex : Real;
  vsSectionName  : String;
  vrItemIndex    : Real;
  vsItemName     : String;
step
  // Stellt die zu Lesende oder Schreibende Ini Datei ein. Eine nicht
  // exisitierende Ini Datei wird beim Schreiben automatisch erstellt.
  // Schon existierende Dateien werden erweitert.
  INIFile.SetFileName('%PRG%\IPHelpExample.INI');
  for vrSectionIndex := 1 to 4 do begin
    for vrItemIndex := 1 to 3 do begin
      vsSectionName := 'Sec' + Str(vrSectionIndex);
      vsItemName := vsSectionName + 'Ite' + Str(vrItemIndex);
      // Schreibt einen String fr die angegebene Section und das angegebene Item in die INI Datei.
      // Exisitiert die Sektion oder das Item nicht werden diese erzeugt.
      INIFile.WriteString( vsSectionName, 'Str' + vsItemName, 'Val' + Str(vrItemIndex) );
      // Schreibt einen Real wert fr die angegebene Section und das angegebene Item in die INI Datei.
      // Exisitiert die Sektion oder das Item nicht werden diese erzeugt.
      INIFile.WriteReal( vsSectionName, 'Rea' + vsItemName, vrItemIndex);
    end;
  end;
  System.SetValue(0);
end.
<!TXT>

>>
<<
128.127.3.2
Beispiel INI Datei Lesen|INI Datei Lesen
!128.127.2.4 - Procedure SetFileName
!128.127.2.5 - Procedure Load
!128.127.2.6 - Procedure First
!128.127.1.4 - Function Name
!128.127.1.5 - Function Value
!128.127.2.7 - Procedure Next
!128.127.1.3 - Function EOF
--

Mit dem nachfolgendem Beispielen knnen Inhalte aus einer INI Datei gelesen werden.

<!TXT>

Beispiel Sectionen auslesen:
<!CODE>
step
  // Stellt die zu Lesende oder Schreibende Ini Datei ein. Eine nicht
  // exisitierende Ini Datei wird beim Schreiben automatisch erstellt.
  // Schon existierende Dateien werden erweitert.
  INIFile.SetFileName('%PRG%\IPHelpExample.INI');
  // Ldt aus der Ini Datei alle Sectionsnamen
  INIFile.Load('');
  // Ein Interner Zeiger wird auf den Namen der ersten Section eingestellt
  INIFile.First;
  repeat
    // Der Namen einer Section wird ausgelesen und im Debugging Anzeige ausgegeben;
    DEBUG.SHOW(1, 'Section: ', INIFile.Name );
    // Der Interne Zeiger wird auf die nchste Section geschoben.
    INIFile.Next;
  until INIFile.EOF;  // Schleife bedingung wird wahr wenn die letzte Section erreicht wurde
  System.SetValue(0);
end.
<!TXT>

Beispiel Items auslesen:
<!CODE>
step
  // Stellt die zu Lesende oder Schreibende Ini Datei ein. Eine nicht
  // exisitierende Ini Datei wird beim Schreiben automatisch erstellt.
  // Schon existierende Dateien werden erweitert.
  INIFile.SetFileName('%PRG%\IPHelpExample.INI');
  // Ldt aus der Ini Datei eine komplette Section mit eintrgen
  INIFile.Load('Sec1');
  // Ein Interner Zeiger wird auf das erste Item der Section gesetzt
  INIFile.First;
  repeat
    // Der Name des Items wird ausgelesen und in der Debugging Anzeige ausgegeben
    DEBUG.SHOW(1, 'Item Name  : ', INIFile.Name );
    // Der Wert des Items wird ausgelesen und in der Debugging Anzeige ausgegeben
    DEBUG.SHOW(1, 'Item Value : ', INIFile.Value );
    // Der Interne Zeiger wird auf das nchste Item geschoben.
    INIFile.Next;
  until INIFile.EOF;  // Bedingung Schleife wird beendet wenn das letzte Item eingelesen wurde
  System.SetValue(0);
end.
<!TXT>
>>

