rb 中的中文处理 300分 今日解决有效(100分)

  • 主题发起人 主题发起人 wuling
  • 开始时间 开始时间
W

wuling

Unregistered / Unconfirmed
GUEST, unregistred user!
在RRPORT BULID中用DBMEMO对中文有的处理不对,有的丢东西,如何解决
 
找源码中的 ppUtils.pas文件里TruncateWord函数

while ppLineTooLong(lsTruncatedWord, llWidthAvailable, lCanvas, liTabStops, lTabStopArray) and
(Length(lsTruncatedWord) > 1)do
lsTruncatedWord := Copy(lsTruncatedWord, 1, Length(lsTruncatedWord) - 1);
改为:
while ppLineTooLong(lsTruncatedWord, llWidthAvailable, lCanvas, liTabStops, lTabStopArray) and
(Length(lsTruncatedWord) > 1)do
// lsTruncatedWord := Copy(lsTruncatedWord, 1, Length(lsTruncatedWord) - 1);
//replaced by the followed
if Windows.IsDBCSLeadByte(Byte(lsTruncatedWord[Length(lsTruncatedWord)])) then
lsTruncatedWord := Copy(lsTruncatedWord, 1, Length(lsTruncatedWord) - 2)
else
lsTruncatedWord := Copy(lsTruncatedWord, 1, Length(lsTruncatedWord) - 1);
解决汉字折行乱码问题
 
记得有人说过,修改他的源代码可行,但我非常着急
没有时间研究,那位大下修改过救救我
 
老大ppUtils.pas文件里找不到TruncateWord函数
 
这里修改的是rb50的源程序,rb5.5的源程序没有这个函数了,相应的折行程序大概要跟踪在ppPlainText.pas
里的TppTextWrapper.WrapText过程,实现比rb50复杂多了,但好像还是没解决汉字折行问题
因此简便起见,要么用5.0版,要么推荐改用fastreport,速度快,执行文件也小,功能不弱于rb
而且使用起来比rb方便多了,只是文档没有rb周全,程序控制能力没有rb强,修改了折行问题的
fastreport可在tian.yeah.net下载。
 
接受答案了.
 
后退
顶部