0

正如标题所示,我找不到那个单位。

有没有等价物?

我正在尝试将一个单元从 VCL 移植OleServer到其uses子句中包含的 Firemonkey,但我在 Embarcaderos 网站上找不到有关此问题的任何信息。

我也试过谷歌它,但没有成功。

我在哪里可以找到TOleServer和/或其OleServer与 Firemonkey 兼容的单元?

或者我如何在我的 Firemonkey 项目中实现该单元?

4

2 回答 2

1

嗨,我以前有同样的问题,我在 OleServer 中进行了更改

  1. 将 Vcl.OleSever 复制到您的项目并将其重命名为 FMX.OleServer
  2. 在实施部分做这样的改变:

implementation
uses
  FMX.Controls;

resourcestring
  sNoRunningObject = 'Unable to retrieve a pointer to a running object registered with OLE for %s/%s';

  1. 在初始化部分更改为 FMX.Controls.TControl

initialization
  GroupDescendentsWith(TOleServer, FMX.Controls.TControl);
end.

  1. 最后在导入的库单元中将 VCL.OleServer 重命名为 FMX.OleServer
于 2021-05-25T03:03:53.400 回答
0

实际上,为 COM/OLE 服务器编译 TLB(类型库)单元的主要问题似乎是发生了一些单元重命名。理想情况下,Delphi IDE 应该自动检测并修复它。

根据上面 Doug Rudd 的评论,我在 TLB 单元中将“使用 OleServer”修复为“使用 Vcl.OleServer”。

由于即使对于现在的 Pro 版本(至少在我目前使用的 10.2.2 Tokyo 版本),Delphi 安装文件夹下也有一个“源”文件夹,我也可以轻松地(使用 GrepWin 免费工具)发现“EmptyParam”这导致我的 TLB 无法编译已经消失了。它位于 System.Variants 单元下,还需要在其 TLB 中使用(在它位于 System 之前,因此您不需要为它使用某个单元)。

猜猜我可以再次导入 COM/OLE 服务器来制作新的 TLB 导入单元,但由于它是手动结束的(删除使用“图形”、“StdVcl”和“OleCtrls”单元,这些单元在旧版本中会膨胀可执行文件大小Delphi 的版本)和手动编辑的导入 TLB 过去在命令行应用程序中运行良好,我没有任何理由重新导入类型库。

您可以在https://github.com/Zoomicon/tranXform/commit/e99f42049b8a4c1534d9edb78ed5e6493e6e5786看到我为使我的 XSLer 工具与最新的 Delphi 一起工作所做的更改。该 XSLer 命令行工具正在使用 MSXML (Microsoft XML) 自动化服务器。

于 2018-02-03T23:34:52.220 回答