Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wie lese ich den Typen REG_MULTI_SZ aus der Registry aus? (https://www.delphipraxis.net/3306-wie-lese-ich-den-typen-reg_multi_sz-aus-der-registry-aus.html)

f.r.e.s.h.d 6. Mär 2003 07:54


Wie lese ich den Typen REG_MULTI_SZ aus der Registry aus?
 
Ich möchte den Wert als String auslesen, aber der Wert ist wohl Binär, obwohl er als Stringwert in der Registry zulesen ist, aber wenn ich einen doppelklick auf diesen Wert mache, dann wird mir ein Binärwert angezeigt.

f.r.e.s.h.d 6. Mär 2003 11:03

stark habs hinbekommen... :hello:

Gollum 6. Mär 2003 11:06

Hallo,

kannst Du uns auch mitteilen wie?

f.r.e.s.h.d 6. Mär 2003 11:43

So, hier ist ein Beispiel....

Delphi-Quellcode:
procedure ReadREG_MULTI_SZ(const CurrentKey: HKey; const Subkey, ValueName: string;
  Strings: TStrings);
var
  valueType: DWORD;
  valueLen: DWORD;
  p, buffer: PChar;
  key: HKEY;
begin
  // Clear TStrings
  // TStrings leeren
  Strings.Clear;
  // open the specified key
  // CurrentKey Schlüssel öffnen
  if RegOpenKeyEx(CurrentKey,
                  PChar(Subkey),
                  0, KEY_READ, key) = ERROR_SUCCESS then
  begin
    // retrieve the type and data for a specified value name
    // Den Typ und Wert des Eintrags Ermitteln.
    SetLastError(RegQueryValueEx(key,
                 PChar(ValueName),
                 nil,
                 @valueType,
                 nil,
                 @valueLen));
    if GetLastError = ERROR_SUCCESS then
      if valueType = REG_MULTI_SZ then
      begin
        GetMem(buffer, valueLen);
        try
          // receive the value's data (in an array).
          // Ein Array von Null-terminierten Strings
          // wird zurückgegeben
          RegQueryValueEx(key,
                          PChar(ValueName),
                          nil,
                          nil,
                          PBYTE(buffer),
                          @valueLen);
          // Add values to stringlist
          // Werte in String Liste einfügen
          p := buffer;
          while p^ <> #0 do
          begin
            Strings.Add(p);
            Inc(p, lstrlen(p) + 1)
          end
        finally
          FreeMem(buffer)
        end
      end
      else
        raise ERegistryException.Create('Stringlist expected/ String Liste erwartet...')
    else
      raise ERegistryException.Create('Cannot Read MULTI_SZ Value/'+ 
        'Kann den MULTI_SZ Wert nicht lesen...');
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ReadREG_MULTI_SZ(*CurrentKEY*, *SubKey*, *ValueName*, *Strings*);
end;

Ich hoffe damit kommen einige weiter falls sie es auch mal brauchen! :spin:


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