Entwickler-Ecke
Dateizugriff - Wieder Registry problem
patrick - Di 15.10.02 20:40
Titel: Wieder Registry problem
auch wenn ichs nicht gern mach:
her unten stehende quellcode funktioniert nicht!:
aus dem schlüssel "keyfile" wird ein weiterer schlüssel ausgelesen der als valve darin enthalten ist.
dieser wird anschließend geöffnet.
aus dem schlüssel soll nun der wert von "DBText"
ausgelesten und angezeigt werden. und genau das funktioniert nicht :?
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| procedure TForm1.TabSheet5Show(Sender: TObject); var buttoncount,i:integer; regitem,regitemname:string; begin reg:=Tregistry.Create; try reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey('\software\mysoft\library\',true); regitem:=reg.ReadString('keyfile'); reg.CloseKey; reg.OpenKey(regitem,false); showmessage(regitem); //´zu kontrolle ob der key überhaupt geöffnet wurde regitemname:=reg.ReadString('DBText'); // <-das findet er nicht showmessage('Name: '+regitemname); finally reg.closekey; end; reg.Free; end; |
THX
Delete - Di 15.10.02 21:28
Dein try-finally-Block hängt etwas daneben. Nimm mal das reg.Free in das finally rein.
Gib beim zweiten Lesen mal den kompletten Pfad an.
Delete - Mi 16.10.02 07:32
Luckie hat folgendes geschrieben: |
Gib beim zweiten Lesen mal den kompletten Pfad an. |
Na ja, Luckie. Wir wissen aber nicht ob das der Fehler ist. Grob betrachtet müsste der Code funktionieren. Und wenn ich z.B. lese
patrick hat folgendes geschrieben: |
aus dem schlüssel "keyfile" wird ein weiterer schlüssel ausgelesen der als valve darin enthalten ist |
dann vermute
ich, dass dort der komplette Schlüssel drin steht.
@Patrick: Wie ist das bei dir? Steht unter "keyfile" eine Angabe wie
Quelltext
1:
| Software\Irgendwo\Irgendwas |
oder einfach nur
Im letzteren Fall würde ich auf Luckie hören und den
kompletten Schlüssel (von der Root an) angeben. Und befindet sich der gesuchte Schlüssel überhaupt auch in HKEY_LOCAL_MACHINE?
Und zu guter Letzt wieder der übliche Hinweis für unsere NT/2000/XP-Zuschauer:
Da es nur um das Auslesen von Werten geht, würde ich die Registry erst mal so öffnen
Quelltext
1:
| reg := TRegistry.Create(KEY_READ); |
(was u.a. mit HKLM zu tun hat), und auch auf den ersten Schlüssel nur lesend zugreifen:
Quelltext
1:
| reg.OpenKey('Software\mysoft\library',FALSE) |
(denn: wenn er nicht existiert und angelegt werden muss, wird als Rückgabewert für den gesuchten Schlüssel auch nur ein Leerstring geliefert)
patrick - Mi 16.10.02 12:27
also in dem schlüssel ist nur der pfad angegeben
der schlüssel der ausgelesen werden soll ist dbtext
der schlüssel ist ebenfalls im HKEY_LOCAL_MACHINE
cih hab win98
das mit dem reg.free probier ich mal vieleicht wars das ja schon
den wert
Quelltext
1:
| reg.OpenKey(regitem,false); |
hab ich auf false gesetzt damit nicht irgend ein verzeichnis entsteht das ich später nicht mehr wiederfindet
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!