Delphi 带有消息的EVariantTypeCastError类';无法将类型(字符串)的变量转换为类型(双精度)
使用Delphi和FastReport,我在Delphi内部调试时,在这一行之后立即收到以下错误消息:Delphi 带有消息的EVariantTypeCastError类';无法将类型(字符串)的变量转换为类型(双精度),delphi,fastreport,Delphi,Fastreport,使用Delphi和FastReport,我在Delphi内部调试时,在这一行之后立即收到以下错误消息: <FastReport_Component>.ShowReport(true); .ShowReport(true); 然后出现此错误: Project myapp.exe引发异常类EVariantTypeCastError,消息为“无法转换类型的变量” (字符串)转换为类型(双)“” 它在显示报告之前显示两次。但如果我运行myapp而不进行调试,则不会显示错误消息 如何找到导
<FastReport_Component>.ShowReport(true);
.ShowReport(true);
然后出现此错误:
Project myapp.exe引发异常类EVariantTypeCastError,消息为“无法转换类型的变量”
(字符串)转换为类型(双)“”
它在显示报告之前显示两次。但如果我运行myapp而不进行调试,则不会显示错误消息
如何找到导致此错误的备忘录?这份报告有这么多备忘录。有些还包含使用
IIF
的表达式,并且错误消息不会显示更多信息 这只是调试器。它可能只是得到一个预期的错误(由FR代码中的try..except
处理)并正确处理它,但调试器无法知道这一点,并告诉您发生了异常。(使用Indy时,这是一个常见的问题,它会在正常程序流中引发异常。)
调试时,有三种方法可以处理这种情况:
Break
或Continue
选项,并且它仅在调试时发生。)工具->选项->调试器选项
禁用特定异常类(或所有异常)。在这种情况下,您可以将EVariantTypeCastError
添加到要忽略的异常列表中高级断点属性
对话框跳过调试器对特定代码行的异常处理,您知道该代码行将引发要忽略的异常
- 在问题代码行之前的行上设置断点
- 右键单击前一行上的断点,然后从关联菜单中选择
断点属性
- 单击
对话框上的断点属性
按钮,在高级
组框中,取消选中操作
并选中中断
忽略后续异常
- 在问题代码后的行上重复前面的步骤,除了在第二个断点上选中
和取消选中中断
忽略后续异常
- 像往常一样运行代码。调试器将跳过对两个断点之间代码的异常处理
选项#3的优点是它忽略了所有异常处理,但只忽略了两个断点之间的代码块,因此您仍然可以在代码的所有其他区域中获得异常,这些异常可能是调试器中的有效异常。我得到了完全相同的错误,但FastReport没有。我将留下我的错误的背景,因为它可能会帮助其他人。我在以下网站上收到此错误: RESTRequest.Execute()
我将TClientDataSet与TresResponsateStatadapter一起使用,以便在向我的web服务发出请求后,适配器将加载带有web服务返回的JSON字符串的数据集。此数据集用于自动选中/取消选中复选框并加载文本编辑和组合框。由于TJSONObject在json中无法正确解析布尔值,因此我将一些复选框更改为基于整数值而不是布尔值来选中/取消选中。然后我更改了我的webservice,以便它在datatable中查找布尔列,并将其设置为整数值1或0。出于某种原因(完全是我的错),我在该字段中输出了一个带“”的json,而不是整数(“1”或“0”)。这就产生了确切的错误。更正后,错误消失了。我在FastReport中遇到了类似的问题。在我的例子中,它是一个错误的格式应用于一个视图。我可以通过以下方式找到问题组件的名称:
- 使用Break停止执行
- 在“调用堆栈”面板中,从fastreport类(在我的示例中为:frxClass.TfrxCustomMemoView.FormatData(…)中)找到最新的调用,然后双击它
- 如果您没有源代码od Fast报告,将出现一个对话框-只需单击“取消”
- 在“局部变量”面板中,您可能会看到有问题的组件的名称/值/格式