Einzelnen Beitrag anzeigen

[TP]Hawk274
(Gast)

n/a Beiträge
 
#1

Registry Klasse zum Lesen und Schreiben

  Alt 3. Feb 2003, 10:44
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.
  Mit Zitat antworten Zitat