• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

FastReportforDelphi2010中文菜单显示不全或者乱码解决方法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

中文菜单不能正确显示是由于它自带的资源编译器太老,和Delphi2010自带的TEncoding.UTF8不匹配造成的.此资源编译器frcc主要就是将资源文件*.xml中的资源编码后生成相应的.pas文件,没干啥高深的活。
以下是网友自建的Frcc程序,可以正常显示中文了.

可以自己编译一个frcc.exe,替换Res目录下的,然后再recompile即可。  delphi 2010(update5)测试界面都正常。
用delphi 2010建立一个console工程,名称为frcc,代码如下:
program frcc;
{$APPTYPE CONSOLE}
uses
   SysUtils,
   Classes,
   StrUtils;
var
   xml: string;
   list: TStringList;
   i: Integer;
   fileName : string;
   lineWidth: integer;
   line: string;
begin
   try
if ParamCount < 1 then
begin
   Writeln('no input');
   Exit;
end;
xml := ParamStr(1);
fileName := ExtractFileName(xml);
fileName := Copy(fileName, 1, Length(fileName) - 4); //delete ext .xml
list := TStringList.Create();
list.LoadFromFile(xml, TEncoding.UTF8);
xml := list.Text;
list.Clear;
list.Add('unit ' +   fileName + ';');
list.Add('');
list.Add('interface');
list.Add('{$I frx.inc}');
list.Add('implementation');
list.Add('uses frxRes;');
list.Add('const resXML =');
xml := ReplaceText(xml, #13, '');
xml := ReplaceText(xml, #10, '');
i := 1;
while True do
begin
   if (i + 80) < (Length(xml) + 1) then
       lineWidth := 80
   else
       lineWidth := Length(xml) + 1 - i;
   if lineWidth = 0 then
       break;
   line := Copy(xml, i, lineWidth);
   list.Add(QuotedStr(line) + '+');
   i := i + lineWidth;
end;
list.Add(''''';');
list.Add('initialization');
list.Add('   frxResources.AddXML(Utf8Encode(resXML));');
list.Add('');
list.Add('end.');
list.SaveToFile(ChangeFileExt(ParamStr(1), '.pas'), TEncoding.Default);
list.Free;
   except
on E:Exception do
   Writeln(E.Classname, ': ', E.Message);
   end;
end.


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
delphi通过OLE对word进行单元格合并操作发布时间:2022-07-18
下一篇:
DelphiXE开发Android开机自动启动发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap