我正在将Delphi 2006应用程序移植到Delphi2009。对Unicode的开箱即用的支持非常容易-几乎不需要任何工作。大多数第三方控件都已提供Delphi 2009更新。
Rave Reports(最新版本7.6.1,在here中可用)也已更新,但我似乎无法正确显示包含日语字符的RTF文本。在Delphi 2006中,我通过使用流从屏幕控件(TLMDRichEdit)中读取RTF,然后执行CustomConnection.WriteBlobData,将RVF加载到RVCustomConnection的OnGetRow事件中的DataMemo组件中。
在报告输出中,任何RTF文本现在都显示为一系列矩形和%符号。没有可读的文本。所有其他文本(使用Text和DataText组件显示)正确显示。
是否有人对如何获得包含Unicode的RTF以正确显示有任何经验?甚至支持吗?
最佳答案
我用这个...似乎可以和Dephi XE内置的RAVE软件包一起使用...
Procedure TfrmMain.RaveCustomConnectionGetRow ( Connection: TRvCustomConnection);
Var
MemoString : String;
Index : Integer;
Size : Integer;
Buffer : PAnsiChar;
Begin
{ Init MemoString }
MemoString := '';
For Index := 0 To DataList.Count - 1 Do Begin
MemoString := MemoString + DataList.Strings [Index] + #13#10;
End; { For }
{ Set the Size (Unicode) and Buffer }
Size := Length (MemoString) * 2;
Buffer := PAnsiChar (MemoString);
{ Send the data over as a Blob object to RAVE }
Connection.WriteBlobData (Buffer^, Size);
End; { RaveCustomConnectionGetRow Procedure }