用记事本打开dfm文件,如果包括中文的话,都是用 #+一串数字表示的如何把这个转换出来?

解决方案 »

  1.   

     "#+一串数字表示的 " 这就是汉字的Unicode编码
    很容易转换的
      

  2.   

    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.
      

  3.   

    //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;