str := '商品编码?UserCode?S';
我想把他存到一个数组里 分别如下
s[0] 所存的字符是 '商品编码'
s[1] 所存的字符是 'UserCode'
s[2] 所存的字符是 'S'如何实现 呢? 其中 以?为分割符请高手指点 谢谢 !

解决方案 »

  1.   

    var Tstrs:Tstring;
    begin
       ExtractStrings(['?'],[],pchar(str),Tstrs);
    end;//Tstrs可以用memo.lines来替代,这样你就可以清楚地看到这个函数运行后地结果了
      

  2.   

    var
      str: String;
      s: array[0..2] of String;
      i: Integer;
    begin
      str := '商品编码'?UserCode?S';
      i := 0;
      while (pos('?', str) > 0) do
      begin
        s[i] := Copy(str, 1, pos('?', str) -1);
        str := Copy(str, pos('?', str) + 1, Length(str) - pos('?', str));
        i := i + 1;
      end;
      s[i] := str;
    end;
      

  3.   

    初学,相对可能会繁点.
    begin
      str:= '商品编码?UserCode?S';
      n:=0;
      k:=1;
      j:=length(str);
      for i:=1 to j do
        begin
          if (copy(str,i,1)='?') then
            begin
            s[n]:=copy(str,k,i-k);
            k:=i+1;
            n:=n+1;
            end;
          if i=j then
            s[n]:=copy(str,k,i-k+1);
        end;
    end;
      

  4.   

    var
      sl:tStrings;
      i:integer;
    begin
      sl:=TStringList.Create;
      sl.Delimiter:='?';
      sl.DelimitedText:='商品编码?UserCode?S';
      sl.strings[0]:=
      sl.strings[1]:=
      sl.strings[2]:=
    分别为你的要东西!
      

  5.   

    var
      str: String;
      s: array[0..2] of String;
      i: Integer;
    begin
      str := '商品编码'?UserCode?S';
      i := 0;
      while (pos('?', str) > 0) do
      begin
        s[i] := Copy(str, 1, pos('?', str) -1);
        str := Copy(str, pos('?', str) + 1, Length(str) - pos('?', str));
        i := i + 1;
      end;
      s[i] := str;
    end;