0

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

这是代码示例

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

2 回答 2

8

用这个:

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

“变量”值实际上被视为成熟的表达式;如果你希望它是一个字符串,它需要是一个标准的帕斯卡常数,使用单引号;而且由于您是从帕斯卡代码中执行此操作的,因此您需要通过双引号引用引号。

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

于 2011-05-11T10:56:09.880 回答
6

或者您可以使用其他方式。

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

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

于 2011-05-16T10:20:28.433 回答