-1

我在 Delphi 7 中有一个带有 zeos 6 的系统,我使用以下功能:

function zIncCodeByYear (zQry : TZquery; ....): String;
var
  zConLocal, zConOriginal : TZConnection;
  ... 
begin
  bActive := zQry.Active;
  zConOriginal :=  zQry.Connection;

这总是工作正常,现在我需要将此系统转换为 Delphi Seatle,因此,转换为 Zeos 主干(7.2),安装此版本后,及时编译,我收到错误:

[dcc32 错误] zeosfuncs.pas(265):E2010 不兼容的类型:“TZConnection”和“TZAbstractConnection”

发生什么了?在这个版本中如何从 zquery 获取连接?

4

2 回答 2

0

您并没有真正提供太多代码。不过想必Zeos把类型改成TZQuery.ConnectionTZAbstractConnection. 因此,您只需按如下方式更改局部变量声明即可:

var
  zConLocal, zConOriginal : TZAbstractConnection;

还要记住这个原则:编程到接口,而不是实现(不幸的是,该问题的公认答案非常有趣,但错误。至少我链接的答案是正确的。)

于 2017-07-21T00:17:24.793 回答
0

您可以简单地使用 ZAbstractConnection 并转换为 TZConnection 对您没有任何影响。在这种特定情况下,无论您做什么都没有错。

在 TZConnection 的帮助下,正在发布一些属性,例如数据库、协议……。在基类 TZAbstractConnection 中,这些是公共的。

于 2017-07-21T06:40:41.987 回答