Delphi-PRAXiS

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 07:07


Registry: String auslesen?
 
hallo,

hat jemand nen code, wie ich einen string aus der registry bekomme oder den funktionsnamen?


mfg

Sharky 27. Feb 2004 07:13

Re: Registry: String auslesen?
 
Hai,

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  reg              : TRegistry;
  anmeldung        : string;
begin
  reg := TRegistry.Create;
  try
    reg.RootKey := HKEY_CURRENT_USER;
    anmeldung := '';
    if reg.OpenKey('Software\Euro_Auftrag', True) then
    begin
      anmeldung := reg.ReadString('Benutzer');
    end;
  finally
    reg.free;
  end;
end;

ims 27. Feb 2004 07:15

Re: Registry: String auslesen?
 
hi

ich verweise mal auf das (sehr gute) tutorial von delphi-source.

dort steht u.a:

Delphi-Quellcode:
uses Registry;

procedure TForm1.FormCreate(Sender: TObject);
var regist: TRegistry;
begin
  regist:=TRegistry.Create;
  regist.RootKey:=HKEY_CURRENT_USER;
  regist.OpenKey('Software\MeineFirma\MeinProgramm\1.0', true);
  Form1.Left:=regist.ReadInteger('Left');
  Form1.Top:=regist.ReadInteger('Top');
  regist.free;
end;
anstelle von ReadInteger gibts natürlich auch noch andere, z.B. ReadString.


gruss, dave


//war wohl wieder einer schneller :)

Pseudemys Nelsoni 27. Feb 2004 07:18

Re: Registry: String auslesen?
 
oops sorry, dachte wenn ich es in "Windows API" poste, wissen es die leute was ich meine *gg*

also es geht darum die api funktionen zu benutzen, wie z.b RegCreateKey usw, hat da jemand nen code?

MathiasSimmack 27. Feb 2004 07:22

Re: Registry: String auslesen?
 
Ja, wirf mal einen Blick in Luckies Win32-API-Tutorials. Da gibt´s ein ganzes Kapitel zum Thema.

Sharky 27. Feb 2004 07:25

Re: Registry: String auslesen?
 
Zitat:

Zitat von Pseudemys Nelsoni
oops sorry, dachte wenn ich es in "Windows API" poste, wissen es die leute was ich meine *gg*..

*Grummel*

Ich bin über die Portalseite in dein Posting und habe überhaupt nicht auf die Sparte geachtet. Sorry :oops:

Pseudemys Nelsoni 27. Feb 2004 07:28

Re: Registry: String auslesen?
 
Trotzdem danke für die Mühe :)

@Mathias, gucke ich mal rein, danke^^



EDIT:

ziemlich kompliziert O_o, hat jemand den genauern teil daraus? ich weiss nicht was "pBuf" tut

Luckie 27. Feb 2004 11:05

Re: Registry: String auslesen?
 
Es gibt auch noch die Demos dazu. Hast du da schon mal gekuckt?

Pseudemys Nelsoni 27. Feb 2004 11:11

Re: Registry: String auslesen?
 
ne, habe ich noch nicht, wo finde ich die? bei de downloads habe ich nichts gefunden

Luckie 27. Feb 2004 11:14

Re: Registry: String auslesen?
 
Da wo du auch die Tutorials her hast. http://www.luckie-online.de/Tutorials/

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 01:06 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