变量可以为null而不是同时为null吗?

时间:2013-08-22 14:49:17

标签: delphi delphi-xe3

我正在使用SQLmemTable(Windows 7)运行Delphi XE3。我收到了一个错误

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;

程序执行时没有错误。

变量如何具有值并且同时为空?

提前致谢

1 个答案:

答案 0 :(得分:1)

StrToInt()也失败的事实意味着该字符串不代表有效的整数值。也许字符串中有空格。也许所表示的值超出了Integer的界限。很难说,因为你没有显示实际的字符串值是什么。