Lokale Registry 2.11


Inhaltsverzeichnis:

Einführung
Methoden und Eigenschaften
Methoden und Eigenschaften für Entwickler
Symbole für bedingte Compilierung
Nutzungsbedingungen
History
Download der Unit
Editor


Einführung

TLocalRegistry ist ein Objekt, das es ermöglicht, Werte in einer Datei zu speichern.

Bei der Entwicklung standen folgende Ziele im Vordergrund:

  • Hierarchische Verwaltung der Daten, d.h. Verwaltung, wie in der Windows-Registry
  • Die Speicherung der Daten sollte im Programmverzeichnis möglich sein
  • Der Umstieg von TRegistry sollte problemlos sein (gleiche Methoden)
  • Zusätzliche Vorteile:

  • Die Daten sind durch die binäre Speicherung vor einfachen Manipulationen geschützt
  • Es besteht zusätzlich die Möglichkeit zur Verschlüsselung der Daten
  • Da Windows gerne auch mal abstürzt und die Daten anschließend u.U. nicht mehr lesbar sind, ist eine Datenprüfung mittels Checksumme und ein automatisches Backup-Handling eingebaut.

    Um die Daten auch außerhalb des Programms vollständig editieren zu können, wird es irgendwann ein spezielles RegEdit-Programm geben.

    Es sind bisher nur Methoden implementiert, die für verschiedene Projekte benötigt wurden. Falls weitere Methoden gewünscht sind, mailen Sie mir bitte die Beschreibung der gesuchten Funktion.

    Getestet ist die Unit mit Delphi 3, Delphi 2, 4 und 5 sollten jedoch problemlos funktionieren. Eine Benutzung in Delphi 1 ist mit der vorliegenden Version nicht möglich.

    zurück zum Inhaltsverzeichnis

    Methoden und Eigenschaften

    Erzeugen / Zerstören

    constructor Create;
    destructor Destroy; override
    Die beiden dürften wohl klar sein.

    Zugriff auf die Daten

    function ValueExists(const AValue:String):Boolean;
    Gibt True zurück, wenn ein Wert vorhanden ist.

    procedure ReadBinaryData (const AValue:String; var AData; ADataSize:Integer);
    Liest einen Wert aus der Registry in den Puffer AData. In ADataSize steht die Größe des Puffers, dieser muß größer oder gleich der Datenmenge sein.
    Mit dieser Methode können beliebige Wertetypen ausgelesen werden.

    procedure WriteBinaryData(const AValue:String; var AData; ADataSize:Integer);
    Schreibt ADataSize Bytes aus dem Puffer AData als Binär-Wert in die Registry.

    function  ReadString (const AValue:String):String;
    Liest einen String-Wert aus der Registry.

    procedure WriteString(const AValue, AData:String);
    Schreibt einen String-Wert in die Registry.

    procedure WriteExpandString(const AValue, AData:String);
    Schreibt einen String-Wert in die Registry. Ist ein Alias für WriteString.

    function  ReadInteger (const AValue:String):Integer;
    Liest einen Integer-Wert aus der Registry.

    procedure WriteInteger(const AValue:String; AData:Integer);
    Schreibt einen Integer-Wert in die Registry.

    function  ReadBool (const AValue:String):LongBool;
    Liest einen logischen Wert aus der Registry.

    procedure WriteBool(const AValue:String; AData:LongBool);
    Schreibt einen logischen Wert in die Registry.

    function  ReadFloat (const AValue:String):Extended;
    Liest einen Gleitkommawert aus der Registry.

    procedure WriteFloat(const AValue:String; AData:Extended);
    Schreibt einen Gleitkommawert in die Registry.

    function  DeleteValue(const AValue:string):Boolean;
    Löscht einen Wert.
    Die Methode gibt True zurück, wenn das Löschen erfolgreich war.

    Zugriff auf den Schlüssel

    function  OpenKey(const AKey:String; ACanCreate:Boolean):Boolean;
    Öffnet einen Schlüssel. ACanCreate gibt an, ob der Schlüssel erzeugt wird, wenn er noch nicht vorhanden ist.
    Die Methode gibt True zurück, wenn das Öffnen erfolgreich war.

    function  DeleteKey(const AKey:String):Boolean;
    Löscht einen Schlüssel.
    Die Methode gibt True zurück, wenn das Löschen erfolgreich war.

    procedure CloseKey;
    Schließt einen Schlüssel.

    procedure GetValueNames(AList:TStrings);
    Listet alle Werte im aktuellen Schlüssel auf.

    procedure GetKeyNames(AList:TStrings);
    Listet alle Unterschlüssel im aktuellen Schlüssel auf.

    procedure Clear;
    Löscht die gesamte Registry.

    Speichern und Laden der Daten

    function  LoadFromFile(const AFilename:String):Boolean;
    Lädt die Daten aus der Datei AFilename. Die Endung wird dabei automatisch ersetzt.
    Kann die Datei nicht geladen werden, wird automatisch der vorhergehende Stand geladen.
    Die Methode gibt True zurück, wenn das Laden einer Datei erfolgreich war.

    procedure SaveToFile(const AFilename:String);
    Speichert die Daten in die Datei AFilename. Der vorherige Stand wird als Backup umbenannt.

    property FileType:String read FFileType;
    Gibt den Dateityp für die Registry-Datei zurück (incl. dem Punkt).

    zurück zum Inhaltsverzeichnis

    Methoden und Eigenschaften für Entwickler

    procedure InitParams; dynamic;
    Diese Methode initialisiert die Dateiendungen und die Kennung der Datei.

    Als Beispiel hier die Implementierung:
    procedure TLocalRegistry.InitParams;
    begin
      FFileType :='.lrg';           { Dateityp (incl. Punkt) }
      FFileBType:='.~lr';           { Dateityp Backupfile }
      FFileDType:='Defekt.~lr';     { Dateityp defekte Datei }
      FFileID   :='LocalRegistry';  { Kennung }
    end;

    procedure DecryptData(ABuffer:PByte; ASize:Integer); dynamic;
    Diese Methode wird nach dem Laden der Daten aufgerufen. Sie kann überschrieben werden, um die Daten zu entschlüsseln.
    ABuffer ist ein Pointer auf den Beginn des Datenbereiches, in ASize steht die Länge.

    procedure EncryptData(ABuffer:PByte; ASize:Integer); dynamic;
    Diese Methode wird vor dem Speichern der Daten aufgerufen. Sie kann überschrieben werden, um die Daten zu verschlüsseln.
    ABuffer ist ein Pointer auf den Beginn des Datenbereiches, in ASize steht die Länge.

    zurück zum Inhaltsverzeichnis

    Symbole für bedingte Compilierung

    {$define LocalRegistry_ReadOldCRC}
    Ist dieses Symbol definiert, wird zusätzlicher Code erzeugt, der es ermöglicht Dateien zu lesen, die mit den Versionen 2.0x erzeugt wurden. Beim Schreiben wird grundsätzlich die neue Checksumme erzeugt (PKZIP-kompatibel).
    In neuen Projekten ist die Definition des Symbols nicht notwendig.

    zurück zum Inhaltsverzeichnis

    Nutzungsbedingungen

    Copyright 1998-2000, Peter Haas

    Die Benutzung und Modifikation im privaten Bereich ist ohne Einschränkung.
    Bei Änderungen und Erweiterungen ist der Author an den Ergebnissen interessiert.

    Die Benutzung in kommerzieller Software ist nur nach Genehmigung durch den Autor gestattet.

    Weitergabe des Quelltextes, auch in Auszügen, nur in vollständiger und unveränderter Form.

    zurück zum Inhaltsverzeichnis

    History

    Datum Version  
    1999-07-30 2.0 (beta) erste Veröffentlichung
    2000-05-06 2.01 GetKeyNames, GetValueNames hinzugefügt
    2000-05-25 2.02 DeleteKey, DeleteValue hinzugefügt
    2000-06-26 2.10 Fehler in der CRC-Unit entdeckt und korrigiert
    Korrekte CRC (nach PKZIP) und automatische Konvertierung der alten Version eingebaut
    2000-10-22 2.11 Umstellung der Lizenz auf MPL
    Anpassung an Delphi 4/5
    zurück zum Inhaltsverzeichnis

    Download der Unit

    Hier kann man sich die Unit downloaden (17 kbyte).

    Über einen Erfahrungsaustausch wäre ich erfreut. Bitten mailen Sie mir.

    zurück zum Inhaltsverzeichnis

    RegEdit-Programm

    Dieses Programm ist noch nicht fertig geworden. Genauer gesagt ist noch ein Bug drin, der ein Arbeiten damit unmöglich macht.

    zurück zum Inhaltsverzeichnis

    Mails an mich unter webmaster@pjh2.de. Haftungsausschluss
    Bitte keine E-Mails zu Delphi, die sich nicht auf diese Seiten beziehen. Sie werden von mir nicht beantwortet.