一个变量可以同时为null和非null吗



我正在运行带有SQLmemTable的Delphi XE3(Windows 7)。我收到一个错误

Could not convert variant of type (Null) into type (Integer)

并使用表中的第二条记录将错误追溯到这一行代码。

hh:=tblPop['HHINCOME'];

我检查了表的第二条记录中的空字段,但一无所获。然后我尝试了以下代码:

var 
q:variant;
zz,s:string;
hh:integer;
……
q := tblPop['HHINCOME'];
s:=vartostr(q);
  if VarIsNull(q) then
    zz := 'q is a null variant '+s
  else
    zz := 'q is not a null variant '+s;
ShowMessage(zz);
hh:=Strtoint(s);

该消息返回q不为空,并返回s的整数值,但当我在最后一行将s转换为整数时,仍然收到相同的错误消息。如果我注释掉行

// hh:=Strtoint(s);

并将其替换为静态值

hh:=3;

程序执行时没有出错。

一个变量怎么可能同时有值和为null?

提前感谢

StrToInt()也失败,这意味着该字符串不能代表有效的整数值。也许字符串中有空格。可能表示的值超过了Integer的界限。很难说,因为您没有显示实际的字符串值。

最新更新