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 und Subkey (https://www.delphipraxis.net/90625-registry-und-subkey.html)

EWeiss 20. Apr 2007 19:26


registry und Subkey
 
Hallo

Ich möchte gerne auf einfache weise und ohne Componente den Subkey eines registry schlüssels auslesen.

In C# kann man diesen ganz einfach über

Code:
string[] subKeyNames = key.GetSubKeyNames();
in erfahrung bringen.

Wie kann ich das in Delphi verwirklichen.
TRegistry stellt ein ähnlich function leider nicht zur verfügung.

gruss Emil

mkinzler 20. Apr 2007 19:46

Re: registry und Subkey
 
Delphi-Quellcode:
TRegistry.GetKeyNames

EWeiss 20. Apr 2007 19:59

Re: registry und Subkey
 
Zitat:

Zitat von mkinzler
Delphi-Quellcode:
TRegistry.GetKeyNames

Wenn ich richtig verstanden habe ..

Delphi-Quellcode:
    if PRegKey.HasSubKeys then
       for IntI := 0 to .....
       begin
         subKeyNames := SetLength(string(PRegKey.GetKeyNames(subKeyNames[IntI]), IntI));
       end;

Mit was nun vergleichen ?
GetKeyNames verfügt über keinen Counter wo ich erfahren kann wieviele Subeinträge existieren.

Bei subKeyNames wieder ein problme string und TString nicht kompatibel

gruss Emil

mkinzler 20. Apr 2007 20:03

Re: registry und Subkey
 
Es wird eine Stringliste zurückgeliefert, welche die Eigenschaft Count besitzt.

EWeiss 20. Apr 2007 20:08

Re: registry und Subkey
 
Zitat:

Zitat von mkinzler
Es wird eine Stringliste zurückgeliefert, welche die Eigenschaft Count besitzt.

Danke werds mal versuchen ob ich es geregelt bekomme.

gruss Emil

Rakshasa 20. Apr 2007 20:11

Re: registry und Subkey
 
Code:
var
x: Integer;
sl: TStringlist;

begin

sl := TStringlist.Create;

With TRegistry.Create do begin
 RootKey := HKEY_LOCAL_MACHINE;
 If OpenKey('\Software\Microsoft\Windows', false) then begin
  GetKeynames(sl);

  For x := 0 to sl.count -1 do begin
   Showmessage(sl[x]);
  end;

  CloseKey;
 end;

 free;
end;

sl.free;

EWeiss 20. Apr 2007 20:19

Re: registry und Subkey
 
Zitat:

Zitat von Rakshasa
Code:
var
x: Integer;
sl: TStringlist;

begin

sl := TStringlist.Create;

With TRegistry.Create do begin
 RootKey := HKEY_LOCAL_MACHINE;
 If OpenKey('\Software\Microsoft\Windows', false) then begin
  GetKeynames(sl);

  For x := 0 to sl.count -1 do begin
   Showmessage(sl[x]);
  end;

  CloseKey;
 end;

 free;
end;

sl.free;

Danke für die hilfe ;)

Delphi-Quellcode:
function BASS_WMPVIS_FindPlugins(): PChar; stdcall;
Var
  IntI: integer;

begin

  PRegKey := TRegistry.Create;
  subKeyNames := TStringList.Create;
  try
    PRegKey.RootKey := HKEY_LOCAL_MACHINE;
    PRegKey.Access := KEY_READ;
    PRegKey.OpenKey('SOFTWARE\Microsoft\MediaPlayer\Objects\Effects', false);
    if PRegKey.HasSubKeys then
      PRegKey.GetKeyNames(subKeyNames);
      for IntI := 0 to subKeyNames.Count -1 do
        begin
          Showmessage(subKeyNames[IntI]);
        end;

  finally
   subKeyNames.free;
   PRegKey.CloseKey;
  end;
  Result := FindPluginsPtr; // kommt noch ;)

end;
So gehts ..

Gruss Emil

EWeiss 20. Apr 2007 20:31

Re: registry und Subkey
 
So ist es OK und kommt alles an.

Delphi-Quellcode:
function BASS_WMPVIS_FindPlugins(): PChar; stdcall;
begin

  PRegKey := TRegistry.Create;
  subKeyNames := TStringList.Create;
  try
    PRegKey.RootKey := HKEY_LOCAL_MACHINE;
    PRegKey.Access := KEY_READ;
    PRegKey.OpenKey('SOFTWARE\Microsoft\MediaPlayer\Objects\Effects', false);
    if PRegKey.HasSubKeys then
      PRegKey.GetKeyNames(subKeyNames);
      if subKeyNames.Count <> 0 then
      begin
          FindPluginsPtr := StrAlloc(Length(subKeyNames.CommaText) + 1);
          StrPCopy(FindPluginsPtr, subKeyNames.CommaText);
      end;
      subKeyNames.free;
      PRegKey.CloseKey;
  except
   subKeyNames.free;
   PRegKey.CloseKey;
  end;
  Result := FindPluginsPtr;

end;
Danke nochmal

Grus Emil


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