本文整理自网络,侵删。
用记事本打开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;implementationuses 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;
相关阅读 >>
Delphi tfilestream和tmemorystream分别读取、创建、合并文件
Delphi sysutils.lastdelimiter - 判断一个字符串在另一个字符串中最后出现的位置
更多相关阅读请进入《Delphi》频道 >>