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 に答える