我在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_beg
和x_end
都可以为空,并且在某些行上包含空值。我的问题是,当列var_beg
和var_end
为空时,变量x_beg
和x_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/