Autor Beitrag
stiftmaster
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149



BeitragVerfasst: Do 04.12.08 10:36 
Hallo,

ich verzweifel hier an einem Problem und komme mir vor wie n' kleiner Anfänger - aber ich rall einfach net, was ich falsch mache :-(

Ich möchte einen RegKey aus der Registry löschen. Dazu habe ich folgenden Code geschrieben:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
FReg := TRegistry.Create;
FReg.RootKey := HKEY_LOCAL_MACHINE
FReg.OpenKey('Software\MeinProgramm', False);
if FReg.ValueExists('test'then
  Test := FReg.DeleteKey('test');
FReg.CloseKey;


Die Zeile "FReg.ValueExists('test')" gibt ein true zurück => der Key muss existieren und sollte daher auch gelöscht werden können. Der Wert "Test" ist noch dem angeblichen Löschen auf False und der Eintrag existiert weiterhi in der Registry.

Hat jemand n' Idee, wo mein Fehler liegen könnte? Bin leicht verwundert und am Verzweifeln :-)

Dankend

Stefan
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Do 04.12.08 11:01 
Vielleicht ein Problem mit den Berechtigungen?
Versuchs mal mit HKEY_CURRENT_USER.

_________________
PROGRAMMER: A device for converting coffee into software.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 04.12.08 11:25 
Du schaust nach ob ein Wert existiert, und versuchst danach einen Schlüssel zu löschen...
Wert: ValueExists --> DeleteValue
Schlüssel: KeyExists --> DeleteKey

Du solltest den Rückgabewert von OpenKey beachten.
ausblenden Delphi-Quelltext
1:
if OpenKey... then					
Weil wenn der Schlüssel nicht geöffnet werden kann gibt es sonst Fehler, insbesondere wenn er nicht erstellt werden soll, wenn er nicht existiert (false).
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Do 04.12.08 12:16 
Ferner prüfst Du, ob ein Wert existiert und nicht der Schlüssel, den Du löschen möchtest. Siehe KeyExists.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 04.12.08 12:58 
Das habe ich doch auch geschrieben. :gruebel:
Zusammen mit den beiden jeweils zusammengehörenden Funktionen.

Was er nun löschen will, weiß ich ja nicht, aber da ValueExists ihm true zurückgegeben hatte war ich eher davon ausgegangen, dass ValueExists schon richtig war, und DeleteKey falsch. ;-)
stiftmaster Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149



BeitragVerfasst: Do 04.12.08 15:42 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Was er nun löschen will, weiß ich ja nicht, aber da ValueExists ihm true zurückgegeben hatte war ich eher davon ausgegangen, dass ValueExists schon richtig war, und DeleteKey falsch. ;-)


Manchmal könnte ich mich ja auch in Hintern treten - wenn Blödheit weh tun würde...

Ich verkrieche mich heute in an ganz tiefes Loch und schäme mich für den Rest des Tages :-) Vielen Dank für eure Hilfe. Es ist mir mal wieder ein Licht aufgegangen.

Bis dahin

Stefan
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 05.12.08 01:14 
Und manchmal hilft es schon, wenn man den Rückgabewert prüft und GetLastError aufruft.