我正在将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 }

07-25 23:37