Popov - Fr 06.02.04 17:59
Titel: Sehr einfach auf INI und REG zugreifen mit EasyIni und ...
Bei den Units
EasyIniAppExe,
EasyIniAppDataExe und
EasyRegAppExe handelt es sich um vereinfachte Zugriffe auf Dateien der Ini und Registry. Allerdings mit der Einschränkung, daß die Units den Speicherort der Daten automatisch bestimmen.
Die Units sind auf schnelles Arbeiten mit Ini und Registry ausgelegt, soweit es sich um Einstellungen (Optionen) des Programms handelt. Das erreichen die Units in dem sie einige Schritte automatisieren.
Die großen Vorteile der Units gegenüber dem Arbeiten mit IniFiles und Registry sind:
- die Suche nach dem geeigneten Speicherplatz für die Daten entfällt; wird automatisch ermittelt
- der Speicherort ist Windows XP ff konform, z.B. bei eingeschränkten Benutzerrechten
- das Arbeiten mit IniFile und RegIniFile Klassen entfällt. Die Unit erstellt und gibt Instanzen automatisch frei
- sofort einsetzbar. Unit einfügen und schon können Werte gespeichert und abrufen werden
- schneller Wechsel zwischen Ini und Registry möglich. Durch Wechsel der Unit kann ohne weitere Änderungen am Programm von Ini auf Regisry gewechselt werden und umgekehrt
Nachteile der Units gegenüber dem Arbeiten mit IniFiles und Registry sind:
- die Unit bestimmt den Ort der Speicherung automatisch und ist auf das Speichern der Einstellungen des aktuellen Programms spezialisiert. Zugriffe auf fremde Ini-Dateien (bei Ini) oder Registry-Pfade (bei Registry) sind mit der Unit nicht möglich.
Der Speicherort der Daten wird abhängig von der Unit automatisch ermittelt. Ein Eingriff ist nicht nötig. Es gibt mehrere Units mit unterschiedlichen Speicherorten. Es reicht die Unit auszuwechseln um mit gleichem Befehlssatz die Daten an andere Stelle zu speichern. Der Name der Ini-Datei und Reg-Schlüssel wird aus dem Namen des Programms generiert. Speicherorte sich unterschiedlich je nach Unit. EasyIniAppExe speichert die Ini im gleichen Ordner wie Programm, EasyIniAppDataExe speichert die Ini im Anwendungsdaten- Ordner des Kontos, EasyRegAppExe speichert die Daten in der Registry im Software Pfad der HKCU.
Eine Besonderheit der Units ist, daß sie untereinander kompatibel sind. Es reicht nur die Unit auszutauschen und schon schreibt das Programm nicht in die Ini, sondern in die Registry. An den Namen der Funktionen und Prozeduren ändert sich nichts.
Die Hauptfunktionen der Unit sind ähnlich
IniFiles und
RegIniFiles Unit, d.h. man kann String-, Integer-, Booleanwerte lesen und speichern, Sektoren und Schlüssel auslesen und löschen. Natürlich ist es auch möglich die Units zu erweitern und Time, Date oder Color Funktionen zu schreiben.
Funktionen und Prozeduren:
Im Grunde genommen funktioniert das fast wie bei TIniFile und TRegIniFile. Hier sind die ganzen Methoden gekapselt. Alledings gibt es auch einige Info-Funktionen. Beschrieben werden hier nur die öffentlichen Funktionen und Prozeduren. Die Angaben gelten, soweit nicht anders Hingewiesen, für alle Units:
Hauptfunktionen:
Da die Units das Deklarieren und Initialisieren selbst übernehmen, kann mit den Funktionen direkt gearbeitet werden.
Delphi-Quelltext
1: 2: 3:
| function EasyRegIniType: String;
s := EasyRegIniType; |
- Gibt den Wert "INI" bei der Ini Unit, "INI_APPDATA" bei der Anwendingsdaten-Ordner Unit und "REG" bei der Registry Unit zurück. Auf diese Weise kann man prüfen welche Unit man benutzt.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| function ReadIniString(Section, Ident, Default: String): String; function ReadIniInteger(Section, Ident: String; Default: Longint): Longint; function ReadIniBool(Section, Ident: String; Default: Boolean): Boolean;
s := ReadIniString('Sektion', 'Schluessel', ''); i := ReadIniInteger ('Sektion', 'Schluessel', 0); b := ReadIniBool ('Sektion', 'Schluessel', True); |
- Lesen einen String, Integer oder Boolean Wert aus INI oder REG.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| procedure WriteIniString(Section, Ident, Value: String); procedure WriteIniInteger(Section, Ident: String; Value: Longint); procedure WriteIniBool(Section, Ident: String; Value: Boolean);
WriteIniString('Sektion', 'Schluessel', s); WriteIniInteger('Sektion', 'Schluessel', i); WriteIniBool('Sektion', 'Schluessel', b); |
- Schreiben einen String, Integer oder Boolean Wert in INI oder REG.
Delphi-Quelltext
1: 2: 3:
| procedure DeleteIniKey(Section, Ident: String);
DeleteIniKey('Sektion', 'Schluessel'); |
- Löscht einen Ident-Schlüssel inc. Wert aus der INI oder REG.
Delphi-Quelltext
1: 2: 3:
| procedure EraseIniSection(Section: String);
EraseIniSection('Sektion'); |
- Löscht die ganze ganze Sektion aus der INI oder REG.
Delphi-Quelltext
1: 2: 3:
| procedure ReadIniSection(Section: String; Strings: TStrings);
ReadIniSection('Sektion', ListBox1.Items); |
- Liest alle Ident-Schlüsselnamen einer Sektion (ohne Werte) aus der INI oder REG.
Delphi-Quelltext
1: 2: 3:
| procedure ReadIniSections(Strings: TStrings);
ReadIniSections(ListBox1.Items); |
- Liest alle Sektionsnamen aus der INI oder REG.
Für die letzten beiden Prozeduren wird ein TStrings wie z.B. ListBox oder StringList als Behälter für die Rückgabewerte benötigt.
INFO Funktionen:
Delphi-Quelltext
1:
| function Info_IniExists: Boolean; |
- Prüft ob die Ini Datei existiert (FileExists) in der Ini-Unit. In der Reg-Unit ist der Wert immer True.
Delphi-Quelltext
1:
| function Info_IniRedOnly: ShortInt; |
- Prüft ob die Ini Datei schreibgeschützt ist in der Ini-Unit (-1 = Datei existiert nicht, 0 = Datei ist nicht schreibgeschützt, 1 = Datei ist schreibeschützt). In der Reg-Unit ist der Wert immer 0.
Delphi-Quelltext
1:
| function Info_IniSize: Integer; |
- Gibt die Größe der Ini Datei in der Ini-Unit (einzusetzen wegen der 64Kbyte Grenze bei IniFiles). In der Reg-Unit ist der Wert immer 0.
Delphi-Quelltext
1:
| function Info_IniWriteTest: Boolean; |
- Macht einen Schreib-Lesetest mit der INI in der Ini-Unit. Alle Testwerte werden wieder entfernt. Eventuell wird eine Leere INI Datei erstellt wenn keine INI vorhanden war. Die Werte sind True, wenn der Test erfolgreich war und False, wenn er nicht erfolgreich war. In der Reg-Unit ist der Wert immer True.
EDIT: Text neu formuliert und Beispiele hinzugefügt.