- 人气:
- 放大
- 缩小
- 二维码
- 赞赏
delphi的窗体文件(dfm)文件中的汉字提取出来?
用记事本打开dfm文件,如果包括中文的话,都是用 #+一串数字表示的如何把这个转换出来?
解决方案 »
"#+一串数字表示的 " 这就是汉字的Unicode编码
很容易转换的
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation
uses myfunc;
{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
cText:TextFile;
s,t:string;
w:widestring; //#后面代表的汉字
i,n,lens,j:Integer;
begin
AssignFile(cText,'cnCurrencyU.dfm');
try
Reset(cText);
while not eof(cText) do
begin
Readln(cText,s);
if pos('#',s)>0 then
begin
lens:=Length(s);
s:=copy(s,pos('#',s),lens-pos('#',s)+1);
n:=SubStrNum('#',s); //myfunc
Memo1.Lines.Add(s);
w:='';
for i := 1 to n do
begin
j:=pos('#',s);
t:=Copy(s,j+1,5);
Delete(s,1,j);
w:=w+widechar(strtoint(t));
end;
Memo1.Lines.Add(w);
end;
end;
finally
CloseFile(cText);
end;end;end.
//1.生成一个Unicode与汉字的对应表
//2.将文本文件中的Unicode转为中文
下面是Unicode与汉字的对应表var
w: WideString;
i: Integer;
s: string;
List: TStringList;
begin
List := TStringList.Create; for i := $4e00 to $9fa5 do
begin
s := #36 + IntToHex(i,4); {#36 是 $ 字符}
w := WideChar(i);
List.Add(s + '=' + w);
end; List.SaveToFile('c:\temp\Unicode-Hz.txt');
List.Free;
end;