FastReport出现中文一半的情况怎么解决?

努力偷懒 2008-01-10 09:23:57
我以前忘记了用哪个版本了,现在安装了3.2.39版和4.2版本都出现了一半文字的现象,例如这么一句话:“例如这么一句话”,它显示的是“例如这”这三个字,2个字的他就显示1个字,并不是位置不够,旁边有很多空位置也这样的。如果是要修改源码,该修改那个函数或者过程的代码?有人说设置Font的那个什么GB 2312...什么的可以解决问题,中文的本来就设置了那个的,改了那个属性就不是中文字了。请问这个问题怎么解决啊?谢谢先!
...全文
163 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
努力偷懒 2008-01-23
  • 打赏
  • 举报
回复
问题已解决!是我搞错了,把字体设为默认的就没问题了!
liups 2008-01-15
  • 打赏
  • 举报
回复
我是用richedit代替memo,转一个其他人的方法供你参考(我没试过)

回: hbtswtm

这是在CSDN搜索到的,供参考

Fastreport3.x对中文的支持有问题.例如:frxMemoView中如果填了中文,那么StoreInDFM设时就会有问题.

中文显示不出来.

网上之前也流行了一些解决办法,如:用变量保存中文,运行时再赋值,又或者用另外的独立的设计器来设计报

表.但我觉得这些办法都不好,因为它改变了程序员的使用习惯.

其实问题出Fastreport3.x把widestrings属性持久化到DFM时.因为它会先把text转换成Utf8格式再保存.但

delphi本身对Utf8的支持又不太好,(我发现两个以上的Utf8格式字符串相加有时会出错),所以我把widestrings

这个类持久化函数改了一下去掉了Utf8的转换部份,就把问题切底解决了.

frxUnicodeUtils单元下:
把TWideStrings类的ReadDataW和WriteDataW函数中关于Utf8的转换去掉

具体是:

ReadDataW:
//Add(Utf8Decode(Reader.ReadString));
Add(Reader.ReadString);

WriteDataW:
//Writer.WriteString(Utf8Encode(Get(I)));
Writer.WriteString(Get(I));


来自
http://www.51delphi.com/delphi/showsoftpl?id=14&page=2
michaelsheyong 2008-01-15
  • 打赏
  • 举报
回复
打印机兼容性的问题 换个打印机试试看了

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧