如何检查Delphi TADOConnection.State

问题描述 投票:0回答:1

我有一个方法,可以对

TADOConnection
对象执行一些操作,当连接处于不允许此操作的状态时,有时似乎会发生这种情况。发生这种情况时,会引发异常并且处理失败。我想将该方法包含在一个
if
语句中,该语句只是检查
TADOConnection
的状态以确保它在继续之前已关闭。

因此,我有以下内容:

procedure MyClass.OperateOnADOConnection;
begin
  if ADOConnection.State = stClosed then
  begin
    //do my operations
  end;
end;

我遇到了编译时错误,因为

State
stClosed
显然不是同一对象类型。我也尝试过
if ADOConnection.State = TObjectStates.stClosed then
但后来我得到了一个不同的错误。

据我所知,Delphi 文档非常有限,并且没有真正解释如何使用这些东西。我无法访问 Delphi IDE,因为我通常不是 Delphi 程序员并且许可证有限 - 所以我使用 Visual Studio Code。我发现的在线教程也没有提及

.State
属性。

我该如何使用这个属性?

delphi ado delphi-xe2
1个回答
0
投票

State
属性定义为 TObjectState 值的
Set

集合是相同序数类型的值的集合。这些值没有固有的顺序,一个值在一个集合中包含两次也没有意义。

State
可以同时保存多个
TObjectState
值。您试图将整个
Set
与特定值进行比较,这就是您收到错误的原因。您应该检查所需的值是否包含在 Set 内。您可以使用
in
运算符来实现此目的,例如:
//if ADOConnection.State = stClosed then
if stClosed in ADOConnection.State then

© www.soinside.com 2019 - 2024. All rights reserved.