Hallo zusammen.
Konnte dazu hier sonst nichts finden, vielleicht kennt der ein oder andere das Problem aber auch.
Der Debugger von Delphi XE x (habs mit XE2 und XE7 getestet) lügt, zumindest beim Arbeiten mit der Registry.
Folgendes Testprogramm:
-Neue Anwendung mit einem Button und einem Memo
Delphi-Quellcode:
uses
.... System.Win.Registry ...
.....
procedure TForm5.Button1Click(Sender: TObject);
var
Reg : TRegistry;
begin
Reg := TRegistry.Create(KEY_READ);
Reg.RootKey := HKEY_CURRENT_USER;
try
OutputDebugString(pchar('Key Exists ist ' + BooltoStr(reg.KeyExists('Ein bestehender Schlüssel X'),true)));
if reg.KeyExists('Wieder Schlüssel X') then begin
Reg.OpenKey(Schlüssel X,false);
OutputDebugString(pchar('Key Exists ist ' + BooltoStr(reg.KeyExists(Schlüssel Y unterhalb von Schlüssel X),true)));
if reg.KeyExists(Wieder der Schlüssel Y) then begin
Reg.OpenKey(Schlüssel Y,false);
Reg.GetValueNames(Memo1.Lines);
end;
end;
finally
Reg.CloseKey;
Reg.Free;
end;
end;
Zum Testen muss es die Registryschlüssel geben und ggf. im letzten Schlüssel muss es Werte geben.
Die Namen der Werte landen dann im Memo.
Bei Delphi 2007 liefert OutpuDebugString jeweils True und wir laufen auch in die IF-Blöcke rein
Wenn ich "reg.KeyExists ....." mittel Strg+F7 untersuche sagt mir Delphi auch das es true ist.
Alles wunderbar.
Wenn ich das gleiche in XE2 und XE7 mache stimmt der Outputdebugstring auch.
Wir kommen auch in die IF-Blöcke. Der Code läuft also zumindest mal richtig.
Wenn ich "reg.keyexists ...." allerdings auswerte sagt mit Delphi doch tatsächlich das es "False" wäre.
Hat jemand schonmal ähnliche Probleme gehabt ?