各位大虾:
    小弟在做程序时有一问题请教,我已经将输入的汉字的首拼提出来了,但是没有办法处理和汉字在一起的数字,现在怎样将EDIT编辑框中的字符和数字分别提出来,然后把数字转换成字符类型,重新把它和转换好的汉字首拼组合起来。列如:
      EDIT1.TEXT:= 中国123 
    转换后是这样的
      EDIT2.TEXT:=ZG
    但是我没有办法处理123呀请大虾多多指教

解决方案 »

  1.   

    以下是怎么样判断一个字符串中汉字或非汉字的代码
    由于你的要求中可能的情况比较多,所以你可以参考这一段代码,自己改动
    大概如此var 
      ws:wideString;//定义宽字符类型
      i:integer;
    begin
      ws:=Edit1.text;
      for i:=1 to length(ws) do
      begin
        if (ws[i] and $ff00)=0 then//是字符或数字类型
         .....
        else //该字符是汉字
         .....  
      end;
    end;
      

  2.   

    procedure anlaystr(str : string; var numstr,substr :string);
    var
      i : Integer;
      tempnum,tempstr: string;
    begin
      for i := 0 to length(str) do
      begin
        if str[i] in [0..9] then
        begin
          tempnum := tempnum + str[i];
        end
        else
        begin
          tempstr := tempstr + str[i];
        end;
      end;
      numstr := tempnum;
      substr := tempstr;
    end;试试,写了没测试,str 为你未分解的窜,numstr 为数字串,substr 为string 串。
      

  3.   

    哦,要宽度string 对了,哈哈,我错了。好像。呵呵
      

  4.   

    我实验了但是不可以的 if str[i] in [0..9]  在这里报错 说是类型不匹配呀 请问大虾该怎么做呀
      

  5.   

    我实验了但是不可以的 if str[i] in [0..9]  在这里报错 说是类型不匹配呀 请问大虾该怎么做呀
    ...................
    str[i] 出来是字符,而[0..9]里边是数值型.
    改为
       if str[i] in ['0'..'9']
    因为字符'0'到'9'是连起的,所以可以这样写
      

  6.   

    还有一个问题请大虾请教:
        为什么  BDE 中TDBEDIT的值不让我编辑呀,怎样才能通过BDE中QUERY使用QUERY,列如;
      我有一个QUERY 和 DATASOURCE 和DBGRID 我将数据库中查到的内容想赋植给DBGRID 然后在
    赋植给TDBEDIT 中 ,用来修改数据,然后在把修改好的数据写会数据库当中去,但是为什么程序
    不让我对TDBEDIT的值进行编辑呀!!!
        请高手指教,十万火急