使用Delphi和FastReport我在此行之后立即在Delphi中调试时收到此错误消息:
<FastReport_Component>.ShowReport(true);
然后出现此错误:
项目myapp.exe引发异常类EVariantTypeCastError,并显示消息'无法转换类型的变体 (String)into type(Double)'。
在显示报告之前显示两次。但如果我在没有调试的情况下运行myapp,则不会显示错误消息。
如何找到导致此错误的备忘录?报告有这么多备忘录。有些还使用IIF
内部表达式,错误消息不再显示任何信息。
答案 0 :(得分:13)
这只是调试器。它可能只是得到一个预期的错误(一个由FR代码中的try..except
处理)并正确处理它,但是调试器无法知道并告诉你发生了异常。 (与Indy合作时这是一个常见问题,它会将异常作为正常程序流程的一部分。)
调试时有三种方法可以解决这种情况:
出现异常对话框时,只需点击Continue
即可。 (你可以告诉它是一个调试器异常,因为你得到Break
或Continue
选项,因为它只在调试时发生。)
您可以使用Tools->Options->Debugger Options
在调试时禁用特定的异常类(或所有异常)。在这种情况下,您可以将EVariantTypeCastError
添加到要忽略的例外列表中。
(我的首选方法)使用Advanced Breakpoint Properties
对话框跳过调试器的异常处理,围绕您知道会引发要忽略的异常的特定代码行。
Breakpoint Properties
。Advanced
对话框中的Breakpoint Properties
按钮,在Actions
组框中,取消选中Break
,然后选中Ignore subsequent exceptions
。Break
并在第二个断点上取消选中Ignore subsequent exceptions
。选项#3的优点是它忽略了所有异常处理,但仅限于两个断点之间的代码块,因此您仍然可以在代码的所有其他区域中获得异常,这些区域可能是调试器中的有效异常。 / p>
答案 1 :(得分:0)
我得到了完全相同的错误,但没有使用FastReport。我会留下错误的背景,因为它可能会帮助别人。我收到了这个错误:
RESTRequest.Execute();
我正在使用带有TRESTResponseDataSetAdapter的TClientDataSet,以便在向我的Web服务发出请求后,适配器将使用Web服务返回的JSON字符串加载数据集。此数据集用于自动检查/取消选中复选框并加载短信和组合框。由于TJSONObject没有在json中正确解析布尔值,因此我更改了一些复选框以基于整数值而不是布尔值来检查/取消选中。我当时正在改变我的web服务,以便它在数据表中查找布尔列到整数值1或0.出于某种原因(完全是我的错),我输出了一个带有&#34;&#34;的json。在该字段中而不是整数(&#34; 1&#34;或&#34; 0&#34;)。这产生了确切的错误。纠正后,错误消失了。
答案 2 :(得分:0)
我在FastReport中遇到了类似的问题。就我而言,这是应用于MemoView的错误格式。我可以这样找到违规组件的名称: