lazybones 发表于 2005-2-15 22:13:00

使用SelectOnScreen(FilterType,FilterData)时,给定FilterType,FilterData也有麻烦:



<BR>var<BR>vType,vData:OleVariant;<BR>...<BR>vType:=VarArrayCreate(,varInteger);<BR>vData:=VarArrayCreate(,varVariant);<BR>vType:=8;<BR>vType:=62;<BR>vData:='0';<BR>vData:=7;       <BR>CadSelect.SelectOnScreen(vType,vData);<BR>运行时提示“参数FilterType(位于SelectOnScreen)无效”


有大虾告知将vType:=VarArrayCreate(,varInteger);中varInteger改为VT_I2则通过(当然先要uses ActiveX)。


分析原因是类型错误,varInteger位置正确的类型是varSmallInt,换用varSmallInt测试通过。


这个问题麻烦的是:VBA帮助中对FilterType的类型说明是Integer,类型库转换后的AutoCAD_TLB.pas中只说明FilterType类型为OleVariant,我们很自然推论FilterType为变体数组,元素为varInteger类型,没有任何线索说明元素类型为varSmallInt!


唉,经常被这些隐蔽的小问题困挠,有些气馁...


jauni 发表于 2005-2-25 09:29:00

类型varSmallInt 困扰了我好久了,迫使我不得不又编了lsp放在cad里,用command去调用,感觉总是不好,太感谢了!
页: 1 2 [3]
查看完整版本: 使用delphi开发AutoCAD的入门级问题(整理添加中)