在 Delphi 中,TOleServer及其单元不适用于Firemonkey

6ie5vjzr  于 9个月前  发布在  其他
关注(0)|答案(2)|浏览(93)

我找不到那个单位。有等价物吗?
我试图从VCL端口到Firemonkey包含OleServer在其uses条款的单位,但我找不到任何关于此问题的Embarcaderos网站上的信息.
在哪里可以找到与Firemonkey兼容的TOleServer和/或其单元OleServer
或者我如何在我的Firemonkey项目中实现该单元?

xoshrz7s

xoshrz7s1#

我以前遇到过同样的问题,我在OleServer中做了一个改变:
1.将Vcl.OleSever复制到您的项目并将其重命名为FMX.OleServer
1.在实现部分中,这样更改:

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

628mspwn

628mspwn2#

事实上,编译COM/OLE服务器的TLB(类型库)单元的主要问题似乎是发生了一些单元重命名。理想情况下, Delphi IDE应该自动检测到这一点并修复它。
根据Doug Rudd的评论,我在TLB单元中将“uses OleServer”修改为“uses Vcl.OleServer”。
由于有一个“源”文件夹下的 Delphi 安装文件夹,即使是专业版现在(至少在我目前使用的10.2.2东京版本),我也能轻易地发现(使用GrepWin免费工具)导致我的TLB无法编译的“EmptyParam”已经消失了。它位于System.Variants单元下,也需要在TLB中使用(之前它是在系统中,所以你不需要使用一些单位)。
我想我可以再次导入COM/OLE服务器来创建新的TLB导入单元,但是因为它是手动结束的(删除使用“Graphics”,“StdVcl”和“OleCtrls”单元,这些单元在旧版本的 Delphi 中会膨胀可执行文件的大小),并且手动编辑的导入TLB用于命令行应用程序,我没有任何理由重新导入类型库。
您可以在https://github.com/Zoomicon/tranXform/commit/e99f42049b8a4c1534d9edb78ed5e6493e6e5786上看到我为使我的XSL工具与最新的 Delphi 一起工作所做的更改。

相关问题