variant类型转换出现invalid variant type 错误(10分)

  • 主题发起人 主题发起人 lcl_003
  • 开始时间 开始时间
L

lcl_003

Unregistered / Unconfirmed
GUEST, unregistred user!
variant类型转换出现invalid variant type 错误

我用的 dxtreelist里有checkbox我想用循环判断那个checkbox被选中,用的代码如下:
procedure TSelectChan.Button1Click(Sender: TObject);
var
i:integer;
begin
if dxtreelist.Items.Values[1]=true then //values是variant类型
showmessage('asd');
end;
但是运行提示 invalid variant type conversion错误

如果我将 if dxtreelist.Items.Values[1]=true里的items改为items[1]就可以

查了查以前的资料,好象是第一次的时候我的dxtreelist.Items.Values[1]为空,
所以会报错,可是我用强制转换dxtreelist.Items.Values[1].asboolean=true也不行啊。

该怎么处理啊
 
建议先用 VarIsNull(dxtreelist.Items.Values[1]) 判断一下是否为空
是空的话就会出现此类错误
 
to lcl_003:

如果你的dxtreelist.Items.Values[1] 的实际值是一个非序数类型,
而是一个字符型等,在强制转换时将会出错。boolean强制转换只能针对boolean,integer
枚举等类型。
所以你须开启一个异常处理模块,将dxtreelist.Items.Values[1]值的判断加在
其中。函数可用vartype(),Val()两个函数。判断值合法后,再强制转换。OK?
 
pcc_mmz1,谢谢你的解答,不过我还是不太明白。非序数类型指什么?因为我要判断的是
dxtreelist里的checkbox是否被选中,那么它只有两中状态:选中,没选中,就是true
和false。

《〈如果你的dxtreelist.Items.Values[1] 的实际值是一个非序数类型,
〈〈而是一个字符型等,在强制转换时将会出错

我的情况应该不存在你说的问题吧。

vartype()怎么用?
 
肯定会有空的,可是我加上判断没用啊
 
用VARTOSTR转换为STRING来判断试试!
 
:pcc_mmz1不在吗:(
 
如果给D6加了pk1 and PK2补叮就会出现上述问题!
 
可我没打包啊
 
接受答案了.
 
后退
顶部