频道分类

delphi的窗体文件(dfm)文件中的汉字提取出来?

作者:admin 来源: 日期:2019/12/19 1:09:56 人气: 标签:

 
用记事本打开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;