![]() |
TRegistry.ReadString......Gibt es Platzhalter in der Reg?
Hi Leutz,
Ich möchte in meinem Projekt den Installationspfad von Firefox auslesen. Auf meinem Computer klappt es auch schon wunderbar mit einem Button und einem Edit-Feld. Doch was ist wenn ein anderer Nutzer meines Programms nicht die Firefox Version "2.0.0.4 (de)" hat. Kann man dort einen Platzhalter einbauen der für alle beliebige Versionen oder Felder steht? Wie z.b. "?" in java oder "*" bei sonstigen?
Code:
regist:=TRegistry.Create;
regist.RootKey:=HKEY_LOCAL_MACHINE; regist.OpenKey('SOFTWARE\Mozilla\Mozilla Firefox\2.0.0.4 (de)\Main', true); Result :=regist.ReadString('Install Directory') + '\'; regist.free; Edit1.Text:=Result; Gruß |
Re: TRegistry.ReadString......Gibt es Platzhalter in der Reg
Erstmal solltest Du in Deinem Code die Rückgabewerte von OpenKey, ValueExists und RegDataType auswerten, sonst könnte das eine Exception werfen. Weiterhin kann ein CloseKey nicht schaden (nur der Ordentlichkeit halber).
Wildcards gibt es so nicht, aber wenn Du erst SOFTWARE\Mozilla öffnest und dann dort ein GetKeyNames verwendest, kannst Du dort die verschiedenen Unterschlüssel durchiterieren. |
Re: TRegistry.ReadString......Gibt es Platzhalter in der Reg
Hallo,
auf meinem Rechner gibt es im Pfad "HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox" einen String-Eintrag CurrentVersion. Dieser enthält den Namen des gesuchten Schlüssels. Gruß Hawkeye |
Re: TRegistry.ReadString......Gibt es Platzhalter in der Reg
Dankeschön für die Antwort.
EDIT: Hawkeye219, du warst schneller ;) aber ich hab es fertig;) Ich habe es nun nach langem Getüftel so gelöst.
Delphi-Quellcode:
//Coded by unlimited
regist:=TRegistry.Create; regist.RootKey:=HKEY_LOCAL_MACHINE; regist.OpenKey('SOFTWARE\Mozilla\Mozilla Firefox\',true); CurrentVersion:= regist.ReadString('CurrentVersion'); regist.CloseKey; Path:= 'SOFTWARE\Mozilla\Mozilla Firefox\' +CurrentVersion+ '\Main'; regist.OpenKey(Path, true); Result :=regist.ReadString('Install Directory') + '\'; regist.free; //Coded by unlimited |
Re: TRegistry.ReadString......Gibt es Platzhalter in der Reg
du solltest dir dringend die Hilfe von TRegistry und den Methoden davon anschauen. Warum übergibst du als zweiten Parameter von OpenKey zum Beispiel True obwohl du nichts schreiben willst? Und warum wertest du nicht die Rückgabewerte von OpenKey aus? Angenommen OpenKey schlägt fehl arbeitest du trotzdem weiter obwohl die folgenden Anweisungen dann gar nicht funktionieren könnnen!
|
Re: TRegistry.ReadString......Gibt es Platzhalter in der Reg
Ausserdem wird der Schlüssel mit KEY_ALLACCESS geöffnet, obwohl nicht geschrieben werden soll. Das führt zu Problemen, wenn der Anwender ohne Administratorenrechte arbeitet.
|
Re: TRegistry.ReadString......Gibt es Platzhalter in der Reg
Auf jeden fall noch ein try fianlly rein!
Delphi-Quellcode:
with regist:=TRegistry.Create do
begin try RootKey:=HKEY_LOCAL_MACHINE; OpenKey('SOFTWARE\Mozilla\Mozilla Firefox\',true); CurrentVersion:= regist.ReadString('CurrentVersion'); CloseKey; Path:= 'SOFTWARE\Mozilla\Mozilla Firefox\' +CurrentVersion+ '\Main'; OpenKey(Path, true); Result :=ReadString('Install Directory') + '\'; finally Free; end; end; |
Re: TRegistry.ReadString......Gibt es Platzhalter in der Reg
Zitat:
Hi Leute, Danke für die Hilfe! Hat mir auch sehr geholfen !!!!! :) Was bedeutet das "with" und das "do" ? ISt das eine besondere "do" schleife oder wie? :?: |
Re: TRegistry.ReadString......Gibt es Platzhalter in der Reg
Schau doch mal in deiner Delphi-Hilfe nach.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:20 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