![]() |
einzelnen TRegistry-Wert auslesen
HI
i-wie hab ich ein kleines Problem mit der Registry, ich kann normal auch die schlüssel auslesen, das ist alles kein Problem, doch möchte ich zu dem getvaluename noch den Wert, aber i.wie schaff ich das nicht und anschließend sollen diese gespeichert werden. das hab ich bis jetzt und es wird nur eine .txt erstellt mit nichts drin:
Code:
procedure Keysauslesen;
var a: Tstringlist; b:string; b2:string; test:string; begin a:=tstringlist.Create; regist2:=Tregistry.Create; b:= 'Software\Electronic Arts\....'; with regist2 do begin try rootkey:= HKEY_LOCAL_MACHINE; if OpenKey(b,false) then begin regist2.GetKeyNames(a); end; finally regist2.Free; end; a.Add(test); a.SaveToFile('C://test.txt'); end; end; |
DP-Maintenance
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Delphi-Frage |
Re: einzelnen TRegistry-Wert auslesen
Hast Du es mal mit
Delphi-Quellcode:
versucht?
a.SaveToFile('C:\test.txt');
|
Re: einzelnen TRegistry-Wert auslesen
1. Wo gibst Du regist2 wieder frei?
2. Du fragst nach den Werten von GetValueNames, aber diesen Befehl kann ich im geposteten Code nicht entdecken. |
Re: einzelnen TRegistry-Wert auslesen
Hi,
imho weiß er eben nicht, wie er GetValueName einsetzen muss. Zitat:
|
Re: einzelnen TRegistry-Wert auslesen
Das hab ich bei der Einrückung komplett übersehen :oops:
|
Re: einzelnen TRegistry-Wert auslesen
ja ist nicht ganz deutlich eingerückt
also es wird auch eine .txt gespeichert, aber mit Null inhalt ^^ ist denn der Befehl "getvaluenames" auch für den Wert hinten bestimmt ? |
Re: einzelnen TRegistry-Wert auslesen
Zwei sehr bedenkliche Sachen:
1. registry2 wird ausserhalb der Prozedur erzeugt, aber innerhalb freigegeben. 2. Die erzeugte Stringliste wird nicht wieder frei gegeben. Debug deinen Code doch mal bzw. bau eine ordentliche Fehlerbehandlung ein:
Delphi-Quellcode:
Fehler korrigiert. Dummer DP Debugger/Compiler. ;)
uses
Registry; procedure Foobar; var reg: Tregistry; sl: TStringList; begin reg := TRegistry.Create(KEY_READ); try // try-finally Registry reg.rootkey:= HKEY_LOCAL_MACHINE; if reg.OpenKey('Software\Borland', False) then begin sl := TStringlist.Create; try // try-finally Stringlist try // try-except Registry + Stringlist reg.GetKeyNames(sl); sl.SaveToFile('D:\test.txt'); except // try-except Registry + Stringlist raise Exception.Create(SysErrorMessage(GetLastError)); end; finally // try-finally Stringlist sl.Free; end; reg.CloseKey; end else // raise exception if reg.OpenKey fails raise Exception.Create(SysErrorMessage(GetLastError)); finally // try-finally reg reg.Free; end; end; procedure TForm1.Button1Click(Sender: TObject); begin try Foobar; except on E: Exception do ShowMessage(E.Message); end; end; |
Re: einzelnen TRegistry-Wert auslesen
Schau Dir mal dies Beispiel an (unkommentiert, in der Hilfe nachlesen ;) ):
Delphi-Quellcode:
procedure TForm1.btn1Click(Sender: TObject);
var kNames, vNames: TStringList; reg: TRegistry; i,j: Integer; ini: TIniFile; begin ini := TIniFile.Create('C:\Test.ini'); try reg := TRegistry.Create(KEY_READ); try reg.RootKey := HKEY_LOCAL_MACHINE; if reg.openKey('Software\Borland\BDS\5.0',false) then begin kNames := TStringList.Create; try reg.GetKeyNames(kNames); for i := 0 to kNames.Count - 1 do begin vNames := TStringList.Create; try reg.GetValueNames(vNames); for j := 0 to vNames.Count - 1 do ini.WriteString(kNames[i],vNames[j],reg.ReadString(vNames[j])); finally vNames.Free; end; end; finally kNames.Free; end; reg.CloseKey; end; finally reg.Free; end; finally ini.Free; end; end; |
Re: einzelnen TRegistry-Wert auslesen
Zitat:
genau so hatte ich das auch schonmal, es werden einfach nur die Unterdinger in .txt gespeichert, aber ich mmöchte ja den Wert eines einzelnen Wertes :-) versteht ihr ? schonmal vielen dank für di zahlreichen Hilfen und Antworten :-) mfg counter [edit=Luckie]Zitat-Tags korrigiert. Mfg, Luckie[/edit] |
Re: einzelnen TRegistry-Wert auslesen
Einen einzigen Wert? Dann schau Dir doch mal die TRegistry.Read...-Methoden an.
|
Re: einzelnen TRegistry-Wert auslesen
also gut, ich bräuchte natürlich erst die namen und dann den entsprechenden Wert dazu.
readstring('') hatte ich schon versucht i-wie anzuwenden anstatt des keyvaluename, aber jedes mal immer nur leere .txt |
Re: einzelnen TRegistry-Wert auslesen
Ja, kennst Du den Schlüssel und den Bezeichner nun im Voraus oder nicht?
|
Re: einzelnen TRegistry-Wert auslesen
Zitat:
Wie schon gesagt, dann guck dir mal die TRegistry.ReadXYZ Methoden an. Vorausetzung ist natürlich, dass du den Schlüssel kennst und den Namen des Registrywertes den du auslesen willst. |
Re: einzelnen TRegistry-Wert auslesen
naja der schlüssel heißt : (standard) und dann gibt es ein wert, der "as312djkadaslek" in der Art ist.
jetzt hab ich einmal: regist.GetKeyNames(text); text.SaveToFile('C:\test.txt'); der listet die namen alle gut auf, das geht ja auch problemlos dan gibs ja regist.ReadString(xx); z.add(x) z.SaveToFile('C:\test.txt'); |
Re: einzelnen TRegistry-Wert auslesen
Langsam, mein Sohn. Setzt dich noch mal fünf Minuten in die Ecke und überleg, was du willst und was du hast. Dann sagst du uns das mal und dann sehen wir weiter.
|
Re: einzelnen TRegistry-Wert auslesen
hehe ok großer xD
langsam komm ich selber raus, daher nochmal hoffentlich deutlicher: ich möchte in der Registry in einem BESTIMMTEN pfad ein Key auslesen und den dazugehörigen Wert. den Pfad hab ich ja, nehme ich jetzt zum Beispiel mal:
Delphi-Quellcode:
regist.rootkey:= HKEY_LOCAL_MACHINE
das Verzeichnis ist dann ('Software\Borland\Delphi\7.0') dort möchte ich jetzt speziell z.B den Key mit dem Namen: "LMLIC" und einen Wert mit zum Beispiel: "UA23-231J-98D..." auslesen lassen |
Re: einzelnen TRegistry-Wert auslesen
Zitat:
Delphi-Quellcode:
funktioniert ;)
StringVar := Registry.ReadString('LMLIC');
|
Re: einzelnen TRegistry-Wert auslesen
Delphi-Quellcode:
uses
Registry; function Foobar: String; var reg: TRegistry; begin result := ''; reg := TRegistry.Create(Key_Read); try reg.RootKey := HKEY_LOCAL_MACHINE; if Reg.OpenKey('Software\Borland\Delphi\6.0\Library', False) then begin try result := reg.ReadString('Search Path'); except raise Exception.Create(SysErrorMessage(GetLastError)); end; end else raise Exception.Create(SysErrorMessage(GetLastError)); finally reg.Free; end; end; procedure TForm1.Button1Click(Sender: TObject); var s: String; begin try s := Foobar; ShowMessage(s); except on E:Exception do ShowMessage(E.Message); end; end; |
Re: einzelnen TRegistry-Wert auslesen
Delphi-Quellcode:
if regist.OpenKey('Software\Borland\.......\7.0', False) then
begin text := TStringlist.Create; try try wert:=regist.ReadString('LMLIC'); text.Add(wert); text.SaveToFile('C:\test.txt'); ok so müsste das dann doch gehen oder ? Edit: oh gab schon wieder was neues..alles klar, das sieht doch erstmal gut aus ^^ erstmal danke, ich guck mir das mal an so |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:26 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