FastReport 4.13.1 中文菜单显示不全或者乱码解决方法:
可以自己编译一个frcc.exe,替换Res目录下的,然后再recompile即可。 delphi xe3测试界面都正常。
用delphi xe3建立一个console工程,名称为frcc,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
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
.
|