无法转换COM对象(Delphi XE7 - Delphi Berlin不兼容)

时间:2016-10-08 20:16:42

标签: delphi delphi-xe7 delphi-10.1-berlin

我最近安装了Delphi Berlin。没有工作,所以我当天卸载了它。 现在我的Delphi XE7停止工作了。当我尝试编译任何东西时,我收到此错误,而且我不知道如何修复它。

  

无法转换类型为' System .__ ComObject'的COM对象。接口   输入' Borland.Studio.Interop.IInteropMessageService'。这个操作   失败,因为QueryInterface调用了COM组件   接口与IID' {FF877130-F96F-3885-9A3E-3093A3C1D831}'失败了   出现以下错误:加载类型库/ DLL时出错。 (例外   来自HRESULT:0x80029C4A(TYPE_E_CANTLOADLIBRARY))

错误就像上面所示。没有提到源文件。

我已经尝试使用'修复'由Embarcadero提供,但他们的工具不起作用:

C:\Delphi\Delphi XE7\bin>tregsvr -t Borland.Studio.Interop.tlb
Embarcadero Turbo Register Server(32) -- COM Server Registration utility.
Version 1.3  Copyright (c) 1997-2010 Embarcadero Technologies, Inc.

Type library name: C:\Delphi\Delphi XE7\bin\Borland.Studio.Interop.tlb
Type library GUID: {F939BACD-3FD5-437A-833F-BA3535A45966}

Error: Error accessing the OLE registry

FIX(由@rruz建议):上面的实用程序需要在" Admin" (提升)权限。谢谢@RRuz。

1 个答案:

答案 0 :(得分:0)

我有同样的问题,但情况更糟。

我还必须使用以下命令注册此类型库。以提升的权限运行此文件:

tregsvr -t Borland.Studio.ToolsAPI.tlb

可能是由于将Delphi安装移至其他文件夹(最初安装在错误的文件夹中)引起的,迁移向导解决了其中的一些问题,但显然不是全部,现在可以重命名。

机器有点呆板,可能是因为进程监视器仍在运行,所幸该工具的新版本有效,使我得以找到此问题。

此工具显示所有查询的注册表项...并且此特定工具以“找不到名称”的形式弹出。

我这样做如下:

  1. 启用捕获事件
  2. 清除屏幕。
  3. 非常快速地进行重构-重命名

立即停止捕获事件。

然后分析日志;)