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:
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;
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?
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.