![]() |
Registry Klasse zum Lesen und Schreiben
Ich möchte mir gerne eine Registry Klasse schreiben von der ich jeweils nur Lesen oder Schreiben aufrufen muss. Das ist übrigens meine erste eigene Klasse.
Intern soll geklärt werden welcher Typ gelesen / geschrieben wird. Für das direkte lesen und schreiben soll eine interne Funktion aufgerufen werden. Bisher lief das Lesen und Schreiben immer folgendermaßen ab.
Code:
Nur möchte ich jetzt gerne in der Klasse noch jeweils eine Funktion zum direkten Lesen und Schreiben benutzen. Dieser soll der Wert und der Registry Datentyp übergeben werden. Anhand dieser Parameter soll die jeweilige lese bzw. schreiben Funktion ausgeführt werden. Nur wie händel ich das? Ist das überhaupt möglich? In diesem Punkt herrscht noch Verwirrung in meinem Kopf ... glaube man müsste sich für beide Parameter einen eigenen Datentyp definieren, wenn ich mich nicht irre. Wer kann mir in diesem Punkt helfen, den Knoten in meinen Kopf zu lösen?
function WriteToRegistry(const ARegKey, ARegName, ARegValue: String): Boolean;
var Registry: TRegistry; begin Result := TRUE; Registry := TRegistry.Create; Registry.RootKey := 2147483650; //HKEY_LOCAL_MACHINE { Der Registry-Pfad für meinen Eintrag } try if Registry.OpenKey(ARegKey, TRUE) = TRUE then Registry.WriteString(ARegName, ARegValue) else begin ErrorMsg(rcsREGKEY_WRITEERROR); Result := FALSE; end; finally Registry.CloseKey; Registry.Free; end; end; function ReadFromRegistry(const ARegKey, ARegName: String; var ARegValue: String): Boolean; var Registry: TRegistry; begin Result := TRUE; Registry := TRegistry.Create; try Registry.RootKey := 2147483650; //HKEY_LOCAL_MACHINE if Registry.KeyExists(ARegKey) = TRUE then begin if Registry.OpenKey(ARegKey, FALSE) = TRUE then begin if( Registry.ValueExists(ARegName) ) then ARegValue := Registry.ReadString(ARegName) else begin ErrorMsg(rcsREGKEY_READERROR); Result := FALSE; end; end else Result := FALSE; end else Result := FALSE; finally Registry.Free; end; end; Des weiteren vestehe ich nicht warum der Compiler HKEY_LOCAL_MACHINE nicht kennt. Welche Unit muss ich einbinden bzw, was muss konfigurieren / einstellen um diese Konstante zu benutzen? In der OH bin ich leider auch nicht fündig geworden. |
Re: Registry Klasse zum Lesen und Schreiben
Zitat:
...:cat:... |
Moin Hawk,
also HKEY_LOCAL_MACHINE sollte sich in der Unit Windows befinden. Was stellst Du Dir eigentlich unter direktem Lesen / Schreiben vor? Den (Root)Key, Wertnamen, Wert und Typ musst Du wohl immer angeben. |
Zitat:
Damit meine ich die Funktionen WriteString, WriteExpandString, WriteInteger, WriteBool und WriteBinaryData bzw. ReadString, ReadInteger, ReadBool und ReadBinaryData. Dieses muss ja jeweils für Lesen und Schreiben unterschieden werden. Deshalb dachte ich man lagert das in eine weitere Funktion aus. Somit kann z.B. nachher der Fehler leichter bzw. schneller gefunden werden. Vielleicht bauen ich auch noch eine Fehlerrückgabe ein. Die dann den genauer Fehler beinhaltet. Dann fliegen die Messages (ErrorMsg) raus! Die stören glaube ich nur! Hoffe ich habe mich jetzt verständlich ausgedrückt!? :?: |
Suche mal in der Delphi-Hilfe nach der Direktive overload, damit kannst Du die gleichen Funktionsnamen für verschiedene Parameter-/Ergebnisslisten nutzen.
...:cat:... |
thx ... das scheint es gewesen zu sein was ich suche ...
|
Aber was soll das ganze TRegistry noch mal in eine Klasse zu kapseln? :roll:
|
Zitat:
Habe jetzt daraus keine Klasse mehr gemacht, sondern als normale funktionen in eine extra Unit gepackt. Hat ja wirklich keinen Sinn. |
Das macht auch keinen Sinn. Du hast jetzt die Unit Registry.pas noch mal in eine Unit verpackt.
|
Warum macht das keinen Sinn?
Ich möchte doch nicht jedesmal die Funktion in den Quellcode hineinkopieren. Es ist doch einfacher nur diese Unit einzubinden. Oder versteh ich jetzt hier irgendwas falsch? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz