Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Wert aus der Registry lesen (https://www.delphipraxis.net/92628-wert-aus-der-registry-lesen.html)

xthing 23. Mai 2007 15:44


Wert aus der Registry lesen
 
Hi Leute,

ich habe ein kleines Problem und zwar muss ich einen Wert aus der Registry auslesen. Wie das funktioniert weiß ich, jedoch ist es so, dass der Wert den ich auslesen will, keinen Namen besitzt.

Delphi-Quellcode:
procedure TForm2.FormCreate(Sender: TObject);
var
  registry_val: TRegistry;
  Key : String;
  Key_Val : String;
begin
registry_val := TRegistry.Create();
Key := 'HKEY_CLASSES_ROOT\acrobat\DefaultIcon';
Key_Val := TStrings.Create;
  try
    if registry_val.OpenKeyReadOnly(Key) then
    begin
      Key_Val := registry_val.ReadString('');
      registry_val.CloseKey;
    end;
  finally
    FreeAndNil(registry_val);
  end;

end;
Der Funktion .ReadString(''), muss ich den Valuenamen übergeben. In dem bestimmten REgistryeintrag ist jedoch nur: HKEY_CLASSES_ROOT\acrobat\DefaultIcon\ vorhanden und unter Valuenamen 'ab(Standard)', der aber nicht als Valuenamen verwendet wird. Wie kann diesen Wert nun auslesen?

Danke für Eure Hilfe.

Grüße
xthing

argonix 23. Mai 2007 16:04

Re: Wert aus der Registry lesen
 
Hi xthing! Ich hoffe, ich habe deine Frage so richtig verstanden: Der Wert "(Standard)" in der Registry ist nur ein Anzeigewert. Der eigentliche Wert ist ein Leerstring. In deinem Code greift das TRegistry Objekt auch auf HKCU anstatt den HKCR zu, da du keinen "Rootkey" definiert hast. "OpenKey" greift nur auf die Unterschlüssel des Rootkeys zu. Demnach muss die procedure so aussehen:
Delphi-Quellcode:
procedure TForm2.FormCreate(Sender: TObject);
var
  registry_val: TRegistry;
  Key : String;
  Key_Val : String;
begin
registry_val:=TRegistry.Create;
Key:='acrobat\DefaultIcon';
with registry_val do
  begin
    try
      Rootkey:=HKEY_CLASSES_ROOT;
      if OpenKey(key,false) then
      begin
      Key_Val := registry_val.ReadString('');
      end;
    except
ShowMessage('Es ist ein Fehler aufgetreten!');
end;
  end;
registry_val.Free;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 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 by Thomas Breitkreuz