Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Mal wieder probleme mit der registry (https://www.delphipraxis.net/28257-mal-wieder-probleme-mit-der-registry.html)

glkgereon 22. Aug 2004 07:46


Mal wieder probleme mit der registry
 
hi
also ich will per TRegistry werte aus der registry auslesen

doch irgendwie sind meine variablen leer, bzw der text im edit ist vergleichsweise leer (das os zieh ich mir vorher schon anders...)

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
reg: TRegistry;
begin
reg:=TRegistry.Create;
reg.OpenKeyReadOnly('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion');
osname:=reg.ReadString('ProductName');
version:=reg.ReadString('CurrentVersion');
user:=reg.ReadString('RegisteredOwner');
org:=reg.ReadString('RegisteredOrganization');
Servicepack:=reg.ReadString('CSDVersion');
Edit1.Text:='OS: '+os+' - '+osname+' '+version+' +++ '+user+' - '+org+' +++ '+servicepack+' +++ ';
end;
is da ein denkfehler drin, oder falsch geproggt, oder warum funzt das nicht?

Sharky 22. Aug 2004 09:08

Re: Mal wieder probleme mit der registry
 
Hai glkbkk,

Du musst noch den Root-Key angeben:

Delphi-Quellcode:
  .
  .
  reg.RootKey := HKEY_LOCAL_MACHINE;
  reg.OpenKeyReadOnly('SOFTWARE\Microsoft\Windows NT\CurrentVersion');
  .
  .
Dann sollte es eigentlich gehen.

Christian Seehase 22. Aug 2004 09:09

Re: Mal wieder probleme mit der registry
 
Moin glkbkk,

da haben sich mehrere Fehler eingeschlichen. ;-)
  1. Bei der Angabe des Keys gibt man nur den Subkey an, den Rootkey übergibt man in der Eigenschaft Delphi-Referenz durchsuchenRootKey
  2. Beim Öffnen des Keys fehlt die Abfrage, ob das erfolgreich war.
  3. Das Registry Objekt wird nicht wieder freigegeben (try/finally)
  4. Der Key wird nicht geschlossen (try/finally)

MathiasSimmack 22. Aug 2004 09:17

Re: Mal wieder probleme mit der registry
 
Noch ein Problem. Unter 9x/ME stehen die Angaben nicht im "Windows NT"-Schlüssel. Sollte man, wie ich finde, erwähnen, auch wenn glkbkk das Programm erst mal nur für sein eigenes Betriebssystem schreibt.

GuenterS 22. Aug 2004 09:17

Re: Mal wieder probleme mit der registry
 
Delphi-Quellcode:
procedure ReadInfoFromRegistry;
var
  lReg: TRegistry;
  lOSName, lVersion, lUser, lOrg, lServicePack: string;
begin
  lReg := TRegistry.Create(KEY_READ);
  try
    lReg.RootKey := HKEY_LOCAL_MACHINE;
    if (lReg.OpenKeyReadOnly('SOFTWARE\Microsoft\Windows NT\CurrentVersion')) then
    try
      lOSName := lReg.ReadString('ProductName');
      lVersion := lReg.ReadString('CurrentVersion');
      lUser := lReg.ReadString('RegisteredOwner');
      lOrg := lReg.ReadString('RegisteredOrganization');
      lServicepack := lReg.ReadString('CSDVersion');
    finally
      lReg.CloseKey;
    end;
  finally
    lReg.Free;
  end;
  Memo1.Lines.Add('OS: ' + lOSName + ' ' + lVersion + ' +++ ' + lUser + ' - ' + lOrg + ' +++ ' + lServicepack + ' +++ ');
end;
[Edit]Zu langsam[/Edit]

glkgereon 22. Aug 2004 15:22

Re: Mal wieder probleme mit der registry
 
:wall: so vile fehler...

kann ich denn gucken wie der pfad nu heisst, ob Windows NT, oder ob stattdessen da ein Windows XP oder so hinmuss?
kann man das irgendwie nachgucken?

GuenterS 22. Aug 2004 15:25

Re: Mal wieder probleme mit der registry
 
unter XP ist es ebenfalls Windows NT.

glkgereon 22. Aug 2004 15:27

Re: Mal wieder probleme mit der registry
 
aba bei Windows 95/98 ja bestimmt nicht
wenns nur zwei versionen gibt, könnte man ja auch einfach das betriebssystem prüfen...
aber dann muss ichs fürn neues wieder umschreiben, falls denn ma wieda was kommt
und was is mit ME/2003?

MathiasSimmack 22. Aug 2004 15:29

Re: Mal wieder probleme mit der registry
 
Unter 95/98/ME ist es nur "Windows" (logisch, oder? ;)). Der einfachste Weg wäre ein Bool-Array mit den beiden Strings. Abhängig von der ermittelten Plattform (Delphi-Bordmittel oder API) benutzt du einen davon und greifst automatisch auf den richtigen Schlüssel zu.

Schlecht erklärt, ich geb´s zu, aber so lässt es sich ohne viel Aufwand machen.

glkgereon 22. Aug 2004 15:31

Re: Mal wieder probleme mit der registry
 
habs schon verstanden :-D

thx


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:27 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