gpt4 book ai didi

delphi - 无法创建 OpenOffice 桌面实例(com 对象)

转载 作者:行者123 更新时间:2023-12-03 19:49:01 24 4
gpt4 key购买 nike

我在创建 StarSuite Desktop 对象的实例时遇到了一些问题。
我使用了下面的标准结构,但每当涉及到这一行时:StarDesktop := StarOffice.CreateInstance('com.sun.star.frame.Desktop');我的 StarDesktop 变体保持未分配状态。我很确定代码在那里之前是可以的,但也许 OpenOffice 安装的某些东西搞砸了。
有没有办法检查 com 对象或者有人有同样的问题并且可以解决它......

uses
ComObj;

procedure OpenOfficeDocument;
var
StarOffice: Variant;
StarDesktop: Variant;
begin
StarOffice := CreateOleObject('com.sun.star.ServiceManager');
StarDesktop := StarOffice.CreateInstance('com.sun.star.frame.Desktop');
// StarDesktop is always "unassigned"
....

是的,我知道。我应该更清楚地说明我太 100% 确信它会在正确的环境中正常工作。
但我的问题是它不起作用的原因可能是什么。为什么 'com.sun.star.frame.Desktop'实例未分配。我没有选项/方法来调试它...
投票给我有点不公平,我研究了一个小时,却没有找到解释为什么它不能工作的东西。
或者如何以及在哪里检查 Office 安装是否有问题(我已经卸载并重新安装了两次”
同样,我知道这对其他人有用,通常对我也有用,但是我的系统出了点问题,我想知道一些帮助来指出系统中可能出现的问题(而不是代码中的问题)例子...)

最佳答案

OpenOffice 安装在客户端吗?
不抛出任何异常?

我正在使用 Bernard MarcellyDelphi 7 OOo tool你可以看到他的代码;

var
OpenOffice, StarDesktop: Variant;

...
OpenOffice:= CreateOleObject('com.sun.star.ServiceManager');
if isNullEmpty(OpenOffice) then Raise Exception.Create('OpenOffice connection is impossible');
StarDesktop:= OpenOffice.createInstance('com.sun.star.frame.Desktop');
if isNullEmpty(Result) then Raise Exception.Create(Format('Impossible to create service : %s', ['com.sun.star.frame.Desktop']));
...

'一些常量转换为字符串'

因此,如果 StarDesktop 为 null,则可能无法访问 Oo Desktop 服务。如果 OpenOffice 安装正确,某些功能可能会丢失,必须设置选项。

关于delphi - 无法创建 OpenOffice 桌面实例(com 对象),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41010537/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com