Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Registry auslesen (https://www.delphipraxis.net/9666-registry-auslesen.html)

Bergius 1. Okt 2003 11:53


Registry auslesen
 
Hallo,
ich möchte die Registry von W2K mit Delphi 5 auslesen.

Dafür habe ich einen Schlüssel exportiert:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Steema Software\TeeChart Pro\Editor]
"Left"=dword:00000131
"Top"=dword:000000d2

Und dann ausgelesen:

Delphi-Quellcode:
 
    v_ret:= Reg.OpenKey('HKEY_CURRENT_USER\Software\Steema Software\TeeChart Pro\Editor', True);
    v_string:= Reg.ReadString('Left');
    MessageDlg('v_string: ' + v_string, mtInformation, [mbOk], 0);
v_string war leer.

Daher habe ich gewalt angewendet und mir den Eintrag selber gemacht:

Delphi-Quellcode:
    if REG.ValueExists('Left') then
    begin
      v_string:=Reg.ReadString('Left');
      MessageDlg('der Eintrag existert schon und lautet: v_string: ' + v_string, mtInformation, [mbOk], 0);
    end
    else
    begin
      Reg.WriteString('Left','HKEY_CURRENT_USER\Software\Steema Software\TeeChart Pro\Editor');
      MessageDlg('der Eintrag wurde angelegt ', mtInformation, [mbOk], 0);
    end;
Beim ersten mal kam die Meldung 'der Eintrag wurde angelegt'.
Jetzt steht in v_string der Pfad: 'HKEY_CURRENT_USER\Software\Steema Software\TeeChart Pro\Editor'

Unter regedit steht immer noch:
"Left"=dword:00000131 (auch nach booten)

Wie kann ich die 00000131 auslesen?

Mit freundlichen Grüßen
Rolf Bergius

Luckie 1. Okt 2003 12:03

Re: Registry auslesen
 
Wo gibst du denn bitte hier:
Delphi-Quellcode:
  begin
      Reg.WriteString('Left','HKEY_CURRENT_USER\Software\Steema Software\TeeChart Pro\Editor');
      MessageDlg('der Eintrag wurde angelegt ', mtInformation, [mbOk], 0);
    end;
an, was er reinschreiben soll? :roll:

Bergius 1. Okt 2003 12:23

Re: Registry auslesen
 
procedure WriteString(const Name, Value: String);

Value ist doch jetzt der neue Wert des Schlüssels, oder nicht?

mit:

Reg.WriteString('Left','HKEY_CURRENT_USER\Software \Steema Software\TeeChart Pro\Editor');

müsste der Eintrag in der Regisry wie folgt heißen:

Left 'HKEY_CURRENT_USER\Software\Steema Software\TeeChart Pro\Editor'

tut er aber glücklicherweise nicht.

Ich möchte ja gar nicht schreiben sondern lesen.
Rufe ich Regedit auf:
"Left"=dword:00000131

läuft mein Programm:
v_string = 'HKEY_CURRENT_USER\Software\Steema Software\TeeChart Pro\Editor'

Warum ist v_string != dword:00000131?

Mit freundlichen Grüßen
Rolf Bergius

Christian Seehase 1. Okt 2003 12:24

Re: Registry auslesen
 
Moin Rolf,

gemäss Deiner Reg-Datei handelt es sich doch um Werte vom Typ REG_DWORD, Du versuchst die aber mit ReadString auszulesen.
Dazu müsste es aber REG_SZ oder REG_EXPAND_SZ sein. Das hätte bei Dir eigenlich eine Exception auslösen müssen.
Probiers einfach mal mit ReadInteger.

[EDIT]
Was ich gerade erst gesehen habe:
Du schreibst beim Reg.OpenKey('HKEY_CURRENT_USER\...

Der Rootkey wird aber über

Reg.Rootkey := HKEY_CURRENT_USER

angegeben.
Mit OpenKey wird der darunter befindliche Key (auch Keypfad) angegeben.
Du müsstest bei Dir auf dem Rechner jetzt unter HKEY_CURRENT_USER einen ebenso benannten Schlüssel habe.
[/EDIT]

Bergius 1. Okt 2003 12:46

Re: Registry auslesen
 
Ahhhhhh!

Du hast recht. Jetzt habe ich einen neuen Schlüssel.

'HKEY_CURRENT_USER\HKEY_CURRENT_USER\Software\Stee ma Software\TeeChart Pro\Editor'

dieser Schlüssel ist leer. Ich hoffe, dass ich ihn problemlos löschen kann.

neuer Code
Delphi-Quellcode:
 Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_CURRENT_USER;
    Reg.OpenKey('Software\Steema Software\TeeChart Pro\Editor', True);
    v_int:= Reg.ReadInteger('Top');
    MessageDlg('v_int: ' + IntToStr(v_int), mtInformation, [mbOk], 0);

  finally
    Reg.CloseKey;
    Reg.Free;
    inherited;
  end;
funktionert. :-D

Herzlichen Dank
Rolf Bergius


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