请看:
var  s_Str,s_1,s_2,s_3,s_4:string;字符串:s_Str:='111;222;333;444;';(中间以分号“;”相隔)请问怎么样才能把s_Str中的“111”传给s_1;“222”传给s_2;“333”传给s_3;“444”传给s_4;也就是最后结果为:s_1:='111';
                 s_2:='222';
                 s_3:='333';
                 s_4:='444';如何实现,请写出代码!谢谢!      

解决方案 »

  1.   

    procedure StrToStrings(S, Sep: string;
      const List: TStrings);
    var
      I, L: Integer;
      Left: AnsiString;
    begin
      Assert(List <> nil);
      List.Clear;
      L := Length(Sep);
      I := Pos(Sep, S);
      while (I > 0) do
      begin
        Left := LeftStr(S, I - 1);
        List.Add(Left);
        Delete(S, 1, I + L - 1);
        I := Pos(Sep, S);
      end;
      if S <> '' then
        List.Add(S);
    end;
    var
      b: TStrings;b := TStringList.Create;
    StrToStrings('111;222;333;444', ';', b);
    s_1 := b[0];
    s_2 := b[1];
    ...
      

  2.   

    var n : integer ;
        s_Str : string;
        s_ : array[1..5] of string;
    begin
        s_Str := '1234;234;345;';
        n := 1;
        while pos(';',s_Str)<> 0 do
        begin
            s_[n] := copy(s_Str,1,pos(';',s_Str)-1);
            Inc(n);
            Delete(s_Str,1,pos(';',s_Str));
        end;end;
      

  3.   

    用Copy函数,慢慢截吧。
    var  s_Str,s_1,s_2,s_3,s_4:string;s_Str:='111;222;333;444;';//(中间以分号“;”相隔)s_1 := Copy(s_Str,1,POS(';',s_Str)-1);
    s_Str := Copy(s_Str,Pos(';',s_Str)+1,Length(s_Str));
    .............//建议用数组
    var ss: array of String;
        ii: Integer;
        s_Str:String;  s_Str:='111;222;333;444;';//(中间以分号“;”相隔)
      SetLength(ss,4);
      FillChar(ss,SizeOf(ss),'0');
      ii := 0;
      while POS(';',s_Str) > 0 do
      begin
        ss[ii] := Copy(s_Str,1,POS(';',s_Str)-1);
        s_Str := Copy(s_Str,Pos(';',s_Str)+1,Length(s_Str));
        Inc(ii);
      end;
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      StrList: TStringList;
      s: string;
    begin
      s := '111;222;333;444';
      StrList := TStringList.Create;
      try
        StrList.Delimiter := ';';
        StrList.DelimitedText := s;
        s_1 = StrList[0];
        s_2 = StrList[1];
        // ...  
      finally
        FreeAndNil(StrList);
      end;
    end;