当数据集值为空时,在delphi中AsInteger的值是多少?

时间:2016-09-19 06:47:06

标签: delphi

我在delphi中有这个代码:

var_beg := MyQry.FieldByName('x_beg').AsInteger;
var_end := MyQry.FieldByName('x_end').AsInteger;
x_segment := copy(name, var_beg, var_end - var_beg);

现在,在表中,列x_begx_end都可以为空,并且在某些行上包含空值。我的问题是,当var_begvar_end列为空时,变量x_begx_end会得到什么值?

1 个答案:

答案 0 :(得分:12)

Null由AsInteger函数自动转换为0(对于我尝试的所有数据集组件都是如此,但使用不同的TField后代可能会有不同的行为。)

正如documentation所说:

  

使用AsInteger将字段数据的值读取为整数,   或者为字段的内容分配一个整数值。 TField   不支持整数值,并在a时引发异常   尝试获取或设置AsInteger属性。

转换结果取决于您的对象所属的TField后代类。 TField.GetAsInteger虚拟函数,声明如下:

function TField.GetAsInteger: Longint;
begin
  raise AccessError('Integer'); { Do not localize }
end;

如果您需要检查值是否为null,您可以使用:

myField.AsVariant = Null 

myField.IsNull