AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Registry Klasse zum Lesen und Schreiben

Ein Thema von [TP]Hawk274 · begonnen am 3. Feb 2003 · letzter Beitrag vom 3. Feb 2003
Antwort Antwort
Seite 1 von 2  1 2      
[TP]Hawk274
(Gast)

n/a Beiträge
 
#1

Registry Klasse zum Lesen und Schreiben

  Alt 3. Feb 2003, 09: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
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Registry Klasse zum Lesen und Schreiben

  Alt 3. Feb 2003, 09:47
Zitat von [TP:
Hawk274]In diesem Punkt herrscht noch Verwirrung in meinem Kopf ...
Die Frage habe ich auch noch nicht so richtig verstanden ... Die HKEY_XXX Konstanten sind in der Unit Windows versteckt.
......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#3
  Alt 3. Feb 2003, 09:51
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
[TP]Hawk274
(Gast)

n/a Beiträge
 
#4
  Alt 3. Feb 2003, 10:21
Zitat:
Was stellst Du Dir eigentlich unter direktem Lesen / Schreiben vor?
Ok, war ungenau geschrieben.
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!?
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#5
  Alt 3. Feb 2003, 10:33
Suche mal in der Delphi-Hilfe nach der Direktive overload, damit kannst Du die gleichen Funktionsnamen für verschiedene Parameter-/Ergebnisslisten nutzen.
......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
[TP]Hawk274
(Gast)

n/a Beiträge
 
#6
  Alt 3. Feb 2003, 10:54
thx ... das scheint es gewesen zu sein was ich suche ...
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7
  Alt 3. Feb 2003, 11:01
Aber was soll das ganze TRegistry noch mal in eine Klasse zu kapseln?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
[TP]Hawk274
(Gast)

n/a Beiträge
 
#8
  Alt 3. Feb 2003, 11:19
Zitat:
Aber was soll das ganze TRegistry noch mal in eine Klasse zu kapseln?
Die Frage war berichtigt.
Habe jetzt daraus keine Klasse mehr gemacht, sondern als normale funktionen in eine extra Unit gepackt. Hat ja wirklich keinen Sinn.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9
  Alt 3. Feb 2003, 12:10
Das macht auch keinen Sinn. Du hast jetzt die Unit Registry.pas noch mal in eine Unit verpackt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
[TP]Hawk274
(Gast)

n/a Beiträge
 
#10
  Alt 3. Feb 2003, 13:11
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?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz