Einführung
Methoden und Eigenschaften
Methoden und Eigenschaften für Entwickler
Symbole für bedingte Compilierung
Nutzungsbedingungen
History
Download der Unit
Editor
TLocalRegistry ist ein Objekt, das es ermöglicht, Werte in einer Datei zu speichern.
Bei der Entwicklung standen folgende Ziele im Vordergrund:
Zusätzliche Vorteile:
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.
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. |
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). |
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. |
{$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. |
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.
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 |
Hier kann man sich die Unit downloaden (16 kbyte).
Über einen Erfahrungsaustausch wäre ich erfreut. Bitten mailen Sie mir.
Dieses Programm ist noch nicht fertig geworden. Genauer gesagt ist noch ein Bug drin, der ein Arbeiten damit unmöglich macht.