我在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会得到什么值?

最佳答案

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

正如documentation所说:


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


转换结果取决于您的对象是哪个TField后代类。
TField.GetAsInteger是一个虚函数,声明如下:

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


如果需要检查该值是否为空,则可以使用:

myField.AsVariant = Null


要么

myField.IsNull

关于delphi - 当数据集值为空时,delphi中AsInteger的值是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39566918/

10-09 16:55