小弟初学DELPHI,不懂的还要请教各位大虾!谢谢!

解决方案 »

  1.   

    帮兄弟一把,这是我整理的函数,分别是数字全半角转换、英文全半角转换、英文大小写转换和标点全半角转换,函数中p的用法通常为0不转换,1转半角(或小写),2转全角。
    function TranslationNumber(str: AnsiString;p:integer): AnsiString;
    var
      str0,str1,str2:AnsiString;
      Flags: TReplaceFlags;
      DOType : integer ;
      n:Integer;
    const
      strcn='1234567890';
      stren='1234567890';
    begin
      dotype:=p;
      str0:=str;
      for n:=1 to length(stren) do
      begin
        case doType of
        0:begin
        end;
        1:begin
        str1:=copy(strcn,2*n-1,2);
        str2:=copy(stren,n,1);
        Flags:=[rfReplaceAll];
        str0:=StringReplace(str0,str1,str2,Flags);
        end;
        2:begin
        str1:=copy(strcn,2*n-1,2);
        str2:=copy(stren,n,1);
        Flags:=[rfReplaceAll];
        str0:=StringReplace(str0,str2,str1,Flags);
        end;
        end;
      end;
      Result:=str0;
    end;function TranslationCharset(str: AnsiString;p:integer): AnsiString;
    var
      str0,str1,str2:AnsiString;
      Flags: TReplaceFlags;
      DOType : integer ;
      n:Integer;
    const
      strcn_charset='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
      stren_charset='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';begin
      dotype:=p;
      str0:=str;
      for n:=1 to length(stren_charset) do
      begin
        case doType of
        0:begin
        end;
        1:begin
        str1:=copy(strcn_charset,2*n-1,2);
        str2:=copy(stren_charset,n,1);
        Flags:=[rfReplaceAll];
        str0:=StringReplace(str0,str1,str2,Flags);
        end;
        2:begin
        str1:=copy(strcn_charset,2*n-1,2);
        str2:=copy(stren_charset,n,1);
        Flags:=[rfReplaceAll];
        str0:=StringReplace(str0,str2,str1,Flags);
        end;
        end;
      end;
      Result:=str0;
    end;function TranslationUperCase(str: AnsiString;p:integer): AnsiString;
    var
      str0,str1,str2:AnsiString;
      i:Integer;
      DoType: integer;
    const
      strcn_upercase='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
      stren_lowcase='abcdefghijklmnopqrstuvwxyz';
    begin
        dotype:=p;
        str0:=str;
        case doType of
        0:begin
        end;
        2:str0:=lowercase(str0);
        4:str0:=Uppercase(str0);
        1:begin
           for i:=1 to length(str0) do
           begin
            if str0[i] in ['a'..'z'] then
            str0[i]:=Chr(Ord(str0[i])-32)
            else if str0[i] in ['A'..'Z'] then
            str0[i]:=Chr(Ord(str0[i])+32);
           end;
        end;
        3:begin
          if length(str0) >1 then
          if str0[1] in ['a'..'z'] then
            str0[1]:=Chr(Ord(str0[1])-32);
        end;
        end;
      Result:=str0;
    end;
    function TranslationBiaoDian(str: AnsiString;p:integer): AnsiString;
    var
      str0,str1,str2:AnsiString;
      Flags: TReplaceFlags;
      n:Integer;
      DoType : integer;
    const
      strcn_biaodian='`-=\~!#$%^&()_+|[]{};':",。/<>?';
      stren_biaodian='`-=\~!#$%^&()_+|[]{};'':",./<>?';
    begin
      dotype:=p;
      str0:=str;
      for n:=1 to length(stren_biaodian) do
      begin
        case doType of
        0:begin
        end;
        1:begin
        str1:=copy(strcn_biaodian,2*n-1,2);
        str2:=copy(stren_biaodian,n,1);
        Flags:=[rfReplaceAll];
        str0:=StringReplace(str0,str1,str2,Flags);
        end;
        2:begin
        str1:=copy(strcn_biaodian,2*n-1,2);
        str2:=copy(stren_biaodian,n,1);
        Flags:=[rfReplaceAll];
        str0:=StringReplace(str0,str2,str1,Flags);
        end;
        end;
      end;
      Result:=str0;
    end;
      

  2.   

    这么个搞法?真够难为你的!不过,小弟先谢谢了!不能通过ascii码来转换吗?