Delphi ZeosLib [不兼容的类型:'TZConnection' 和 'TZAbstractConnection']
Delphi ZeosLib [Incompatible types: 'TZConnection' and 'TZAbstractConnection']
我在 Delphi 7 中有一个带有 zeos 6 的系统,我使用以下功能:
function zIncCodeByYear (zQry : TZquery; ....): String;
var
zConLocal, zConOriginal : TZConnection;
...
begin
bActive := zQry.Active;
zConOriginal := zQry.Connection;
这一直运行良好,现在我需要将此系统转换为 Delphi Seatle,并因此转换为 Zeos trunk (7.2),安装此版本后,及时编译,我收到错误:
[dcc32 错误]zeosfuncs.pas(265):E2010 不兼容的类型:'TZConnection' 和 'TZAbstractConnection'
会发生什么?这个版本如何从zquery获取连接?
您并没有真正提供太多代码。但据推测 Zeos 将 TZQuery.Connection
的类型更改为 TZAbstractConnection
。因此,您只需按如下方式更改局部变量声明即可:
var
zConLocal, zConOriginal : TZAbstractConnection;
还要记住原则:Program to an interface, not an implementation(不幸的是,该问题的公认答案非常有趣,但错误。至少我链接的答案是正确的。)
您可以简单地使用 ZAbstractConnection,转换为 TZConnection 对您来说没有任何区别。在这种特定情况下,无论您做什么都没有错。
在 TZConnection 的帮助下,数据库、协议等一些属性正在发布中。在基础 class TZAbstractConnection 中,它们是 public.
我在 Delphi 7 中有一个带有 zeos 6 的系统,我使用以下功能:
function zIncCodeByYear (zQry : TZquery; ....): String;
var
zConLocal, zConOriginal : TZConnection;
...
begin
bActive := zQry.Active;
zConOriginal := zQry.Connection;
这一直运行良好,现在我需要将此系统转换为 Delphi Seatle,并因此转换为 Zeos trunk (7.2),安装此版本后,及时编译,我收到错误:
[dcc32 错误]zeosfuncs.pas(265):E2010 不兼容的类型:'TZConnection' 和 'TZAbstractConnection'
会发生什么?这个版本如何从zquery获取连接?
您并没有真正提供太多代码。但据推测 Zeos 将 TZQuery.Connection
的类型更改为 TZAbstractConnection
。因此,您只需按如下方式更改局部变量声明即可:
var
zConLocal, zConOriginal : TZAbstractConnection;
还要记住原则:Program to an interface, not an implementation(不幸的是,该问题的公认答案非常有趣,但错误。至少我链接的答案是正确的。)
您可以简单地使用 ZAbstractConnection,转换为 TZConnection 对您来说没有任何区别。在这种特定情况下,无论您做什么都没有错。
在 TZConnection 的帮助下,数据库、协议等一些属性正在发布中。在基础 class TZAbstractConnection 中,它们是 public.