为什么Delphi中的Fast Report VCL在编辑变量时会引发堆栈溢出异常?

时间:2011-05-11 10:52:31

标签: delphi delphi-5 fastreport

我正在使用Delphi 5和Fast Report 4来制作报告应用程序。我在设计时在MyReport.f3中定义了一个变量“ReportTitle”,并在运行时为其分配了一个值。为什么我的代码会引发EStackOverflow异常?

以下是代码示例

  frxrprt1.LoadFromFile('c:\MyReport.fr3');
  frxrprt1.Variables['ReportTitle'] := 'Sales Summary Report';
  frxrprt1.ShowReport;

2 个答案:

答案 0 :(得分:8)

使用此:

frxrprt1.Variables['ReportTitle'] := '''Sales Summary Report''';

“变量”值实际上被视为完整的表达式;如果你想要它是一个字符串,它需要是一个标准的pascal常量,使用单勾引用;因为你是用pascal代码做的,所以你需要通过双引号引用引号。

你可能会得到堆栈溢出,因为快速报告的脚本引擎试图弄清楚你编写的任何内容并遇到递归问题。

答案 1 :(得分:6)

或者你可以用另一种方式。

  frxrprt1.Variables['ReportTitle'] := QuotedStr('Sales Summary Report');

函数QuotedStr返回字符串S,引用单引号。这意味着S用单引号括起来,S中的每个引号都加倍。它相当于对AnsiQuotedStr的调用(s,'''')。