Einzelnen Beitrag anzeigen

wadriller

Registriert seit: 25. Feb 2009
43 Beiträge
 
Delphi XE2 Professional
 
#1

Debugger von Delphi XE x lügt

  Alt 13. Mär 2015, 14:10
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 ?
Gruß
Michael
  Mit Zitat antworten Zitat