有如下字符串: 
 80 20 0 0 0   //要求分别取出80,20这两个整数
 95  5 0 0 0   //要求分别取出95,5 这两个数
 100 0 0 0 0   //要取出100 
 5  95 0 0 0   //5,95
像这种有没有什么好的方法?用空格来判断的话,怎么知道前面的到底是几位数?(80,95,100,5)  
各位帮帮忙,主要是空格前后的数字位数不是确定的!!!

解决方案 »

  1.   

    var  sl: TStringList;
         i: integer;
    begin
      sl := TStringList.Create;
      sl.Delimiter := ' ';
      sl.DelimitedText := '80 20 0 0 0';
      for i:= 0 to sl.Count - 1 do
     if sl[i]<>'0' then
      ShowMessage(sl[i]);
      sl.Free;
    end;
      

  2.   

    var
      t:tstringlist;
      i,j:integer;
    begin
      t:=tstringlist.Create;
      t.DelimitedText:='80 20 0 0 0';   //要求分别取出80,20这两个整数
      //t的Strings分别为80,20,0,0,0
      i:=StrToInt(t.Strings[0]);
      j:=StrToInt(t.Strings[1]); 
      Edit1.Text:=IntToStr(i);
      Edit2.Text:=IntToStr(j);
    //其它的同理
      

  3.   

    问一下,DelimitedText 这个属性是表示什么的呢?
      

  4.   

    问题解决了,嘿嘿,上面的方法可以了,不过不太明白这个是什么意思  DelimitedText 
    自己写了个循环,功能一样可以实现:  bl为(95  5 0 0 0)字符串
    k,l,a初始值为0 
    for k:=K+l+1 to length(bl) do                       //分解用水类型比例
     begin
       if bl[k]<>' ' then  //以空格作为标志,直到出现第一个空格,取空格前面的所有字符
          l:=l+1                                       //L为要取的字符串的个数
        else         
        begin         
          bll:=copy(bl,a,l);                           //A为要拷贝的起始位数
          break;         
        end;         
     end;       
     l:=0; a:=k+1;                                    //第二次循环时从空格下一位开始拷贝