Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TRegistry.ReadString......Gibt es Platzhalter in der Reg? (https://www.delphipraxis.net/94231-tregistry-readstring-gibt-es-platzhalter-der-reg.html)

unlimited 18. Jun 2007 15:12


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ß

CCRDude 18. Jun 2007 15:24

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.

Hawkeye219 18. Jun 2007 15:26

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

unlimited 18. Jun 2007 15:27

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

SirThornberry 18. Jun 2007 15:30

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!

Luckie 18. Jun 2007 16:16

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.

fLaSh11 18. Jun 2007 16:25

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;

unlimited 19. Jun 2007 12:40

Re: TRegistry.ReadString......Gibt es Platzhalter in der Reg
 
Zitat:

Zitat von fLaSh11
Auf jeden fall noch ein try fianlly rein!

Delphi-Quellcode:
  with regist:=TRegistry.Create do


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

Bernhard Geyer 19. Jun 2007 12:42

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 23:29 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