Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Registry: String auslesen? (https://www.delphipraxis.net/17021-registry-string-auslesen.html)

Pseudemys Nelsoni 27. Feb 2004 13:28

Re: Registry: String auslesen?
 
hoi luckie.

ist dies der richtige part?:

Delphi-Quellcode:
function Reg_ReadString(const RootKey: HKEY; const RegVal: string): string;
var
  lpType,
  cbData  : DWORD;
begin
  Result  := '';

  // no assigned key
  if(RootKey = 0) then exit;

  // "ValueExists"?
  lpType := REG_NONE;
  cbData := 0;

  if(RegQueryValueEx(RootKey,@RegVal[1],nil,@lpType,nil,@cbData) =
       ERROR_SUCCESS) and
    (lpType in[REG_SZ,REG_EXPAND_SZ]) and
    (cbData > 0) then
  begin
    SetLength(Result,cbData);
    if(RegQueryValueEx(RootKey,@RegVal[1],nil,nil,
      @Result[1],@cbData) = ERROR_SUCCESS) then SetLength(Result,cbData-1)
    else Result := '';
  end;
end;
wenn ja...

kann ich statt @lpType nicht direkt "REG_NONE" eingeben?
und ich weiss auch nicht welcher der variablen dort den zu suchenden key enthält, bzw den zulesenden.
Ich sehe nur Rootkey und den pfad.

MathiasSimmack 27. Feb 2004 14:49

Re: Registry: String auslesen?
 
Du siehst das Prinzip etwas falsch. Es ist nicht wie bei TRegistry, wo du in "OpenKey" den kompletten Pfad angibst, usw. Hier öffnest du den Schlüssel zunächst mit "RegOpenKeyEx"
Delphi-Quellcode:
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,'Software\Microsoft\...usw.',0,
  KEY_READ,rgHandle) = ERROR_SUCCESS) then
try
und erhältst dann im letzten Parameter dieser Funktionen eine HKEY-Variable, die quasi den offenen Schlüssel identifiziert. Damit kannst du dann einen String auslesen, bspw. mit der von dir zitierten Funktion:
Delphi-Quellcode:
  s := Reg_ReadString(rgHandle, // <-- der offene Schlüssel
    'DeinWert');

  MessageBox(0,pchar(s),nil,0);
und dann machst du die Sache wieder zu.
Delphi-Quellcode:
finally
  RegCloseKey(rgHandle);
end;
Zitat:

kann ich statt @lpType nicht direkt "REG_NONE" eingeben?
Probier´s doch aus. IMHO ist das aber eine VAR-Deklaration und funktioniert deshalb nicht. Zumal das Ergebnis (sprich: der Typ des Schlüssels) ja auch noch geprüft wird:
Zitat:

Delphi-Quellcode:
    (lpType in[REG_SZ,REG_EXPAND_SZ]) and

Bitte, bitte: lies das Tutorial und verwende nicht einfach (ohne Sinn und Verstand) Codezeilen. Gerade bei der Registry kann ein Fehler fatal sein!

Pseudemys Nelsoni 27. Feb 2004 15:41

Re: Registry: String auslesen?
 
ok, danke für die erkärung

btw: glückwunsch zum 1234 beitrag ^^


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:31 Uhr.
Seite 2 von 2     12   

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