我有一个方法,可以对
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
属性。
我该如何使用这个属性?
State
属性定义为 TObjectState
值的 Set:
集合是相同序数类型的值的集合。这些值没有固有的顺序,一个值在一个集合中包含两次也没有意义。
State
可以同时保存多个TObjectState
值。您试图将整个 Set
与特定值进行比较,这就是您收到错误的原因。您应该检查所需的值是否包含在 Set
内。您可以使用 in
运算符来实现此目的,例如://if ADOConnection.State = stClosed then
if stClosed in ADOConnection.State then