Delphi中,如何处理EVariantTypeCastError异常,当尝试将String类型变体转换为Double类型时出错?

更新于
2026-10-05 00:29:07
2阅读来源:SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计598个文字,预计阅读时间需要3分钟。

使用Delphi和FastReport创建报告后,尝试调试Delphi时遇到以下错误信息:+ FastReport_Component.ShowReport(true);+ 错误:Project myapp.exe引发异常 class EVariantTypeCastError,信息:Could not convert

使用Delphi和FastReport我在此行之后立即调试Delphi时收到此错误消息:

<FastReport_Component>.ShowReport(true);

然后出现此错误:

Project myapp.exe raised exception class EVariantTypeCastError with message ‘Could not convert variant of type
(String) into type (Double)’.

在显示报告之前它会出现两次.但是,如果我在没有调试的情况下运行myapp,则不会显示错

我如何找到导致此错误的备忘录?报告有这么多备忘录.有些还使用IIF内部表达式,错误消息不再显示任何信息.

这只是调试器.它可能只是得到一个预期的错误(由FR代码中的try..except处理)并正确处理它,但是调试器无法知道并告诉你发生了异常. (与Indy合作时这是一个常见问题,它会将异常作为正常程序流程的一部分.)

调试时有三种方法可以处理这种情况:

>出现时,只需在异常对话框中点击“继续”. (你可以告诉它是一个调试器异常,因为你得到了Break或Continue选项,因为它只在调试时发生.)
>您可以使用Tools-> Options-> Debugger Options在调试时禁用特定的异常类(或所有异常).在这种情况下,您可以将EVariantTypeCastError添加到要忽略的异常列表中.
>(我的首选方法)使用“高级断点属性”对话框跳过调试器围绕您知道将引发要忽略的异常的特定代码行的异常处理.

>在问题代码行之前的行上设置断点.
>右键单击前一行上的断点,然后从上下文菜单中选择“断点属性”.
>单击“断点属性”对话框中的“高级”按钮,然后在“操作”组框中,取消选中“中断”并选中“忽略后续例外”.
>在问题代码之后的行上重复上述步骤,但检查中断并取消选中忽略此第二个断点上的后续异常.
>像往常一样运行代码.调试器将跳过它对两个断点之间的代码的异常处理.

选项#3的优点是它忽略了所有异常处理,但仅限于两个断点之间的代码块,因此您仍然可以在代码的所有其他区域中获得异常,这些区域可能是调试器中的有效异常.

本文共计598个文字,预计阅读时间需要3分钟。

使用Delphi和FastReport创建报告后,尝试调试Delphi时遇到以下错误信息:+ FastReport_Component.ShowReport(true);+ 错误:Project myapp.exe引发异常 class EVariantTypeCastError,信息:Could not convert

使用Delphi和FastReport我在此行之后立即调试Delphi时收到此错误消息:

<FastReport_Component>.ShowReport(true);

然后出现此错误:

Project myapp.exe raised exception class EVariantTypeCastError with message ‘Could not convert variant of type
(String) into type (Double)’.

在显示报告之前它会出现两次.但是,如果我在没有调试的情况下运行myapp,则不会显示错

我如何找到导致此错误的备忘录?报告有这么多备忘录.有些还使用IIF内部表达式,错误消息不再显示任何信息.

这只是调试器.它可能只是得到一个预期的错误(由FR代码中的try..except处理)并正确处理它,但是调试器无法知道并告诉你发生了异常. (与Indy合作时这是一个常见问题,它会将异常作为正常程序流程的一部分.)

调试时有三种方法可以处理这种情况:

>出现时,只需在异常对话框中点击“继续”. (你可以告诉它是一个调试器异常,因为你得到了Break或Continue选项,因为它只在调试时发生.)
>您可以使用Tools-> Options-> Debugger Options在调试时禁用特定的异常类(或所有异常).在这种情况下,您可以将EVariantTypeCastError添加到要忽略的异常列表中.
>(我的首选方法)使用“高级断点属性”对话框跳过调试器围绕您知道将引发要忽略的异常的特定代码行的异常处理.

>在问题代码行之前的行上设置断点.
>右键单击前一行上的断点,然后从上下文菜单中选择“断点属性”.
>单击“断点属性”对话框中的“高级”按钮,然后在“操作”组框中,取消选中“中断”并选中“忽略后续例外”.
>在问题代码之后的行上重复上述步骤,但检查中断并取消选中忽略此第二个断点上的后续异常.
>像往常一样运行代码.调试器将跳过它对两个断点之间的代码的异常处理.

选项#3的优点是它忽略了所有异常处理,但仅限于两个断点之间的代码块,因此您仍然可以在代码的所有其他区域中获得异常,这些区域可能是调试器中的有效异常.