[英]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.