Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Registry- Schlüssel Informationen (https://www.delphipraxis.net/263-registry-schluessel-informationen.html)

Gast 26. Jun 2002 09:52


Registry- Schlüssel Informationen
 
Hallo System Profis, 8)

ich bekomme via:

Registry.GetValueNames(...)

die Namen aller Datenwerte zurück, die dem aktuellen Schlüssel zugeordnet sind.

Bei jedem Namen aber sehe ich in der Registry noch Erweiterung: Typ und Wert.

Wie kann ich den Typ und Wert (ich muss hier den Pfad (der im Wert steht) ablesen und im Edit- Feld anzeigen.

Gruß

Paul Jr.

Daniel 26. Jun 2002 09:59

Hallo Paule,

schau doch mal in der Delphi-Hilfe folgende Funktionen an:
  • TRegistry.GetDataType
  • TRegistry.GetDataSize
  • TRegistry.ReadString / .ReadFloat / .ReadInteger / .Readsonstwas
Ich denke, dass das diejenigen sind, die Du suchst. Wenn Du magst, kann ich Dir auch noch ein Code-Beispiel erstellen.


Grüße,
Daniel

Gast 26. Jun 2002 10:39

Ok :oops:

ich probiere zuerst selbst...es zu knacken....

Danke Daniel

Gruß

Paul Jr.

Gast 26. Jun 2002 10:43

Outsch, Daniel... :shock:

habe leider nicht viel Zeit..., also wenn Du könntest mache für mich bitte ein einfaches
Beispiel...

Gruß

Paul Jr.

Daniel 26. Jun 2002 11:26

iiieeek.
Ich habe kurzfristig einen Termin einzuhalten. :shock:

Ich fürchte, ich werde Dir das erst am nachmittag liefern können. :?


Grüße,
Daniel

jbg 26. Jun 2002 11:45

Da Daniel gerade keine Zeit hat, poste ich einfach mal ein Beispiel. Vielleicht kann dir das ja helfen.
Code:
var
  reg: TRegistry;
  DataType: TRegDataType;
  DataInfo: TRegDataInfo;
  Value: string;
begin
  reg := TRegistry.Create;
  try
    if reg.OpenKeyReadOnly('\Software\Somewhere') then
    begin
      if reg.ValueExists('MeinWert') then
      begin
       { reg.GetDataInfo('MeinWert', DataInfo)
        DataType := DataInfo.RegData;
        // oder so wenn nur der Datentyp interessiert }
        DataType := reg.GetDataType('MeinWert');
        case DataType of
          rdUnknown: raise Exception.Create('Unbekannter Datentyp');
          rdString, rdExpandString: Value := reg.ReadString('MeinWert');
          rdInteger: Value := IntToStr(reg.ReadInteger('MeinWert'));
{          rdBinary:
          begin
            GetMem(Buffer, DataInfo.DataSize);
            reg.ReadBinaryData('MeinWert', Buffer^, DataInfo.DataSize);
            ...
            FreeMem(Buffer);
          end;}
        end;
      end;
      reg.CloseKey; // wird auch von reg.Free gemacht, aber der Ordnung zuliebe
    end;
  finally
    reg.Free;
  end;
end;

Gast 26. Jun 2002 11:56

Prima jbg 8)

ich werde es gleich ausprobieren...falls ich mich hier nicht mehr melden sollte bedeutet das, dass ich mit Deinem Beispiel zu recht gekommen bin...

Danke

Gruß

Paul Jr.

toyoman 15. Jul 2008 15:39

Zitat:

Zitat von jbg
Da Daniel gerade keine Zeit hat, poste ich einfach mal ein Beispiel. Vielleicht kann dir das ja helfen.
Code:
var
  reg: TRegistry;
  DataType: TRegDataType;
  DataInfo: TRegDataInfo;
  Value: string;
begin
  reg := TRegistry.Create;
  try
    if reg.OpenKeyReadOnly('\Software\Somewhere') then
    begin
      if reg.ValueExists('MeinWert') then
      begin
       { reg.GetDataInfo('MeinWert', DataInfo)
        DataType := DataInfo.RegData;
        // oder so wenn nur der Datentyp interessiert }
        DataType := reg.GetDataType('MeinWert');
        case DataType of
          rdUnknown: raise Exception.Create('Unbekannter Datentyp');
          rdString, rdExpandString: Value := reg.ReadString('MeinWert');
          rdInteger: Value := IntToStr(reg.ReadInteger('MeinWert'));
{          rdBinary:
          begin
            GetMem(Buffer, DataInfo.DataSize);
            reg.ReadBinaryData('MeinWert', Buffer^, DataInfo.DataSize);
            ...
            FreeMem(Buffer);
          end;}
        end;
      end;
      reg.CloseKey; // wird auch von reg.Free gemacht, aber der Ordnung zuliebe
    end;
  finally
    reg.Free;
  end;
end;

wie muss der BUFFER definiert werden?
Bei mir erkennt er diesen als nix.


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