簡體   English   中英

Rave Reports 8中的字符串問題

[英]String trouble in Rave Reports 8

ready to move on to Delphi 2010. 我們目前正在與德爾福2006年的工作,但我們現在准備轉移到德爾福2010年。

但問題出在我們的Rave報告中...

使用Rave 8運行報告時,我們只會遇到很多字符串錯誤。它們根本沒有任何意義。 (報告編譯沒有錯誤,我們甚至可以在Rave 6中運行它們而沒有任何錯誤。)

更新:錯誤發生在報表本身的事件腳本內。 錯誤與字符串和字符串連接有關。

例如:

//This event causes access violation (in rtl140.bpl) at run time
{ Event for Page1.OnBeforeReport }
function Page1_OnBeforeReport(Self: TRavePage);
var
  s: String;
begin
  s := 'My text in param';
  s := s + ' and som more text';
  s := copy(s,1,length(s)) + ' and then some more';           //<-- This line causes AV
  RaveProject.SetParam('MyTestParam', s);
end OnBeforeReport;


//This event works OK
{ Event for Page1.OnBeforeReport }
function Page1_OnBeforeReport(Self: TRavePage);
var
  s: String;
begin
  s := 'My text in param';
  s := s + ' and som more text';
  s := copy(s,1,length(s));                                   //<-- This line is OK
  RaveProject.SetParam('MyTestParam', s);
end OnBeforeReport;


//This event works OK too
{ Event for Page1.OnBeforeReport }
function Page1_OnBeforeReport(Self: TRavePage);
var
  s: String;
begin
  s := 'My text in param';
  s := s + ' and som more text';
  s := copy(s,1,length(s)) + s;                               //<-- This line is OK
  RaveProject.SetParam('MyTestParam', s);
end OnBeforeReport;

我們真的想堅持使用Rave,因為我們有許多報告(150多個),具有很多功能(sql語句,事件等)。 此外,我們的客戶還設計了自己的自定義報告。

有人知道這些錯誤的原因嗎?
這些問題是否有解決方案或解決方法?

真是意外,昨天我也做同樣的事情。 20個報告中有19個工作正常。 一個問題是使用SetParam和DataMemo且包含ContainsRTF = True的腳本。

我對SetParam的解決方案是將其替換為DataSet中的計算字段。 對於包含ContainsRTF = True的DataMemo,除了將ContainsRTF設置為False之外,我沒有找到其他解決方案(但是我很幸運,實際上並不需要RTF)

由於Delphi 2009 Unicode已成為默認的字符串編碼,因此,當您聲明String var時,您將獲得Unicode String而不是Ansi String。 無法更改默認行為(這是大量難以發現的錯誤和難以修復的錯誤的來源)。 如果問題來自您的源代碼,則可以嘗試將字符串編碼顯式更改為ANSI,而不是使用默認值。 如果問題來自使用Rave編輯器創建的報告,我們發現的解決方法是使用較舊版本的Rave(7.5之前的版本)編譯報告,這似乎可以正常工作。

從7.5版開始,這就是一個無法解決的unicode問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM