fastReport4.5以上版本求助:4.5修正了TotalPages#變量的B...
在frxClass.pas中找到以下代碼
procedure TfrxCustomMemoView.ExtractMacros;
var
s, s1: WideString;
i, j: Integer;
begin
if FAllowExpressions then
begin
s := FMemo.Text;
i := Pos('[TOTALPAGES#]', UpperCase(s));
if i <> 0 then
begin
Delete(s, i, 13);
Insert(IntToStr(FTotalPages), s, i);
FMemo.Text := s;
end;
將 s, s1: WideString;改為 s, s1: String;
修改后代碼為
procedure TfrxCustomMemoView.ExtractMacros;
var
s, s1: String;
i, j: Integer;
begin
if FAllowExpressions then
begin
s := FMemo.Text;
i := Pos('[TOTALPAGES#]', UpperCase(s));
if i <> 0 then
begin
Delete(s, i, 13);
Insert(IntToStr(FTotalPages), s, i);
FMemo.Text := s;
end;
原因是Delete過(guò)程的長(cháng)度計算和Pos函數的計算不一致。
Pos函數中,中文字符計算為2個(gè)字符。
Delete過(guò)程,中文字符計算為1個(gè)字符。
比如“第1頁(yè) 共[TOTALPAGES#]頁(yè)”
執行i := Pos('[TOTALPAGES#]', UpperCase(s));i的值為9
執行Delete(s, i, 13); 刪除從第9個(gè)字符開(kāi)始的13個(gè)字符,即保留前面8個(gè)字符"第1頁(yè) 共[TO",刪除后面的13個(gè)字符
如果總頁(yè)數為2頁(yè),執行Insert(IntToStr(FTotalPages), s, i);顯示結果為"第1頁(yè) 共[T2"
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。