1

假设我有一个类 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”,此外,当我将鼠标悬停在汽车变量上时,我看到它是“TCar(address) as ICar”但是当我尝试在 64 位模式下调试此代码我无法进入方法“Start”(调试执行只是传递到方法调用下方的下一行而无需介入)并且当我移动时我看到“Pointer(address) as ICar”鼠标悬停在汽车变量上。我究竟做错了什么?能够介入方法在我的项目中非常重要。

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

4

0 回答 0