Inf:= TStringList.Create;
                Inf.Delimiter := ',';
                Inf.DelimitedText:='2007-07-09,14:07:04,13076806572,9160597,0,36562133,FA3813#07788015740*123#5000389354105#5031 5207#6#2400#38338*38350#6000*7000#WHLU2658123*EFRU2658120#2400*2600'       
                 for i := 1 to length(inf[6]) do
                 begin
                 case Ord(copy(inf[6],i,1)) of  //ord将字母转成ASCII字符 -->为什么这一句通不过?
                 65..90,97..122,42,35,48..57: edit1.Text:=edit1.Text+copy(inf[6],I,1);
                 else
                 edit2.Text:=edit2.Text+copy(inf[6],i,1);
                 end;
                 end;

解决方案 »

  1.   

    对不起,没看你上面的代码,inf不是字符串,我上面回复作废!!!
    看不懂你的代码!
      

  2.   

    copy(inf[6],i,1)是字符串,不是字符,用copy(inf[6],i,1)[1]这个就好了~
      

  3.   

    现在看明白了点,不用Copy,直接:case Ord(inf[6][i]) of
      

  4.   

    copy(inf[6],i,1)是字符串,不是字符,用copy(inf[6],i,1)[1]这个就好了~
    这样也不对呀?case Ord(copy(inf[6],i,1)) of  
    上面这一句的目地是想:从inf[6]这个字符串中取出依次取出一个字符出来转成ASCII字符,如果与规定的字母相同,就将这个字母放到edit1中.现在关键是Ord(copy(inf[6],i,1)) 通不过什么原因?
      

  5.   

    copy(inf[6],i,1)其实就是你想要的那个字符,只不过copy的结果是字符串,字符串的长度是1
    copy(inf[6],i,1)[1]就是取字符串的第一位~Ord(copy(inf[6],i,1)) 通不过是因为ord的参数应该是字符,而copy结果是字符串
    ~