导致EVariantBadVarTypeError异常的原因是什么?

时间:2016-10-25 13:57:30

标签: delphi exception variant

我在应用程序关闭时有类型EVariantBadVarTypeError的例外。

enter image description here

我想自己调试我的应用程序,但Documentation对我来说并不是那么清楚,我不知道我应该在代码中查找哪种错误。

  

EVariantBadVarTypeError 是变体类型的异常类   错误。

     变种操作时会引发

EVariantBadVarTypeError   由于某个值不是有效的变体类型而失败。

有人能告诉我一个更明确的解释和一个导致这种例外的例子吗?特别是,我不知道哪些值不是"有效的变体类型"。

2 个答案:

答案 0 :(得分:4)

在Windows上,VariantOleVariant在内部使用COM Automation functions进行各种VARIANT操作。当其中一个EVariantBadVarTypeError函数(如VariantCopy()VariantClear()VariantChangeTypeEx()VarI4FromStr()等)失败且VARIANT时,会引发vt 3}}错误:

  

输入参数的变体类型无效。

这意味着变体的{{1}}字段指定的数据类型与正在执行的操作不兼容。

这解释了异常,但为什么在您的应用中引发。如果没有更多关于代码在引发异常时所做的事情的详细信息,堆栈跟踪看起来是什么导致引发异常等,那么这里的任何人都无法诊断实际发生的事情或如何解决它。您必须调试代码才能弄明白。

答案 1 :(得分:1)

有效的变体类型string,int,real等。其他任何东西,如对象,都不是有效的变体。更多信息:

http://docwiki.embarcadero.com/RADStudio/Seattle/en/Variant_Types