XE8 64位调试对象派生自TInterfacedObject

时间:2016-02-11 00:08:30

标签: delphi debugging 64-bit delphi-xe8 tinterfacedobject

假设我有一个TCar类,它支持接口ICar并且是从TInterfacedObject派生的。

program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils;

type
    ICar = interface
        ['{EF3294ED-7D3B-4B5D-8E10-FA9E406477D2}']
        procedure Start;

    end;

    TCar = class(TInterfacedObject, ICar)
    private
        procedure Start;
    end;

procedure TCar.Start;
begin
    WriteLn('Started!');
end;

var
    car: ICar;
begin
  try
    car := TCar.Create;

    car.Start;
    { TODO -oUser -cConsole Main : Insert code here }
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.

当我在32位模式下调试上面的代码时,我能够介入TCar类的“Start”方法,而且当我将鼠标悬停在car变量上时,我看到它是“TCar(地址)为ICar”但是当我尝试在64位模式下调试此代码时,我无法介入方法“启动”(调试执行只是传递给方法调用下面的下一行而没有插入),我看到“指针(地址)为ICar”当我将鼠标移到汽车变量上时。我究竟做错了什么?在我的项目中,能够介入方法非常重要。

最近在一台干净的机器上安装了Delphi XE8,并且没有安装防病毒软件。

0 个答案:

没有答案