gpt4 book ai didi

delphi - EmptyParam 是变量,现在是函数 - 如何解析遗留代码?

转载 作者:行者123 更新时间:2023-12-03 14:39:35 26 4
gpt4 key购买 nike

我只是将一些用 Delphi 6 编写的旧代码升级到 Delphi XE2。不幸的是,代码引用了 Word97 COM 对象来生成一些 .doc 文档。代码中有一个Word97的直接uses子句。

我必须保持生成的文档与旧的 Crystal Report 和另一个需要该文档格式的第 3 方应用程序使用的 Word 格式相同。

所以,回答这个问题。因为我在 use 子句中使用 Word97,所以每当使用 EmptyParam 变量时,编译器都会提示实际和形式 var 参数的类型必须相同。这是直接来自 Word97.pas 源文件的。这是因为 EmptyParam 现在被声明为函数而不是变量。

处理这个问题的最佳方法是什么?我是否应该将 Delphi 6 源文件(Word97.pas 等)复制到我的本地目录中,直接将它们与 System.Variants.pas 一起添加到我的项目中,并更改我的应用程序的编译器指令以包含 EMPTYPARAM_VAR?我还没有尝试过,但希望它能将 EmptyParam 声明为变量。或者也许有一个更简单的解决方案。

谢谢

编辑

尽管我已经接受了答案,但这里还有更多背景信息,以供将来引用。下面是代码示例(AddClaimsLetter 是“Application”COM 对象 - 即 TWordApplication):

AddClaimsLetter.Documents.Open(Wordfile, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam);

在不进行任何更改的情况下,此处的 EmptyParam 参数在编译时失败,指出“E2033 实际和形式 var 参数的类型必须相同”。

但是,因为我想保留 Word97(位于 Delphi 6 Ent. 安装文件夹中的 OCX/Server 中),所以我确实需要将 .pas 文件复制到本地项目文件中,并声明一个就地使用的变量EmptyParam(因为这些文件也尝试编译,并且我得到了与上面相同的编译器错误)。

现在一切正常,但我可能会与管理层讨论为此应用程序升级到更高版本的 Office!

谢谢

最佳答案

解决该问题的快速方法可能是声明一个 OleVariant 类型的局部变量,并将函数 EmptyParam 的结果分配给它。

关于delphi - EmptyParam 是变量,现在是函数 - 如何解析遗留代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9370483/

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