Autor Beitrag
patrick
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1481

WIN2k, WIN XP
D6 Personal, D2005 PE
BeitragVerfasst: Di 15.10.02 20:40 
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 :?

ausblenden 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

_________________
Patrick
im zweifelsfall immer das richtige tun!!!
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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
ausblenden Quelltext
1:
Software\Irgendwo\Irgendwas					

oder einfach nur
ausblenden Quelltext
1:
Irgendwas					

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
ausblenden 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:
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1481

WIN2k, WIN XP
D6 Personal, D2005 PE
BeitragVerfasst: 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
ausblenden Quelltext
1:
reg.OpenKey(regitem,false);					

hab ich auf false gesetzt damit nicht irgend ein verzeichnis entsteht das ich später nicht mehr wiederfindet

_________________
Patrick
im zweifelsfall immer das richtige tun!!!