101*3*102*1*103*0*104*3*105*1*106*0*107*3*108*1*109*0*110*3*111*1*112*
0*001000怎样才可以将上面的字符串以*为条件将它分开,并得到相应的数值??
注:上面的字符长度不定,但格式相同。
如:101*3*102*1*103*0*104*3
    105*3*102*1*103*0*104*3
    105*0*108*1*103*0*104*3
等.

解决方案 »

  1.   

    很简单啊,一个函数搞定了啊。自己定义一个这样的函数
    function PosString(PosValue :Byte;str :string;ToKen :string):TStrings;
    自己写这个函数吧
      

  2.   

    先声明一个全局变量的数组
    ArrValue : Array of String;procedure TfrmQYFB.MultiCount(sign : String; s : String);
    var
      iStart,iEnd,sLeng,i,ArrayLeng : Integer;
      vArray : Array of Integer;
    begin
      sLeng := Length(s);
      setLength(vArray,sLeng);
      ArrayLeng := 0;
      for i := 0 to sLeng do
      begin
        if Copy(s,i,1) = sign then
        begin
          vArray[Arrayleng] := i;
          ArrayLeng := ArrayLeng + 1;
        end;
      end;
      i := pos(sign,s);
      vArray[ArrayLeng] := sLeng+1;
      setLength(ArrValue,ArrayLeng);
      sLeng := ArrayLeng - 1;
      iStart := 1;
      iEnd := i -1;
      ArrayLeng := 0;
      for i :=0 to sLeng do
      begin
        ArrValue[ArrayLeng] := Copy(s,iStart,iEnd);
        ArrayLeng := ArrayLeng + 1;
        iStart := vArray[i]+1;
        iEnd := vArray[i+1]-iStart;
      end;
    end;调用的时候用MultiCount(“*”,s);过程结束后所有的字符串都存在ArrValue数组中了!
    对ArrValue做循环就可以了!
      

  3.   

    显示在ListBox1中uses  StrUtils;procedure TForm1.Button1Click(Sender: TObject);
    var temp,s:string;
    begin
    S:='101*3*102*1*103*0*104*3*105*1*106*0*107*3*108*1*109*0*110*3*111*1*112*0*111';
    while pos('*',s)<>0 do
    begin
     ListBox1.Items.Add(leftstr(s,pos('*',s)-1));
     temp:=copy(s,pos('*',s)+1,length(s)-pos('*',s)+1);
     s:=temp;
    end;
    ListBox1.Items.Add(s);
    end;
      

  4.   

    begin
    ListBox1.Items.Delimiter :='*';
    ListBox1.Items.DelimitedText:='101*3*102*1*103*0*104*3*105*1*106*0*107*3*108*1*109*0*110*3*111*1*112*0*111';
    end;
      

  5.   

    Delimiter,DelimitedText哈,原来还有这么个属性!高兴,谢谢楼上