type
  TA:array[0.99] of string;
function fx(s:string):TA;
求将字符串分解为数组的经典函数function fx(s:string):TA;。
例:
var
  A:TA;
S:='RE RTY 34F 34ER'
a:=fx(s);结果:a[0]:=RE 
      a[1]:=RTY
      a[2]:=34F
      a[3]:=34ER

解决方案 »

  1.   

    with TStringList.Create do 
    begin 
    Text := AnsiReplaceStr(SrcStr,'|',#13); 
    result := Strings[wantOrder]; 
    Free; 
    end; 
      

  2.   

    我是用传址的过程来实现结果返回的,反正挺简单的 
    //Strs: TStrings 分割后的字符串元素 
    //str: string; 源字符串 
    //spt: string 分隔符 
    procedure TFileServerThread.cutString(var Strs: TStrings; str: string; const spt: string); 
    begin 
    while (pos(spt, str) <> 0) do begin 
    strs.Add(copy(str, 1, pos(spt, str) - 1)); 
    delete(Str, 1, pos(spt, str) + 1); 
    end; 
    strs.Add(str); 
    end; 调用方式如下: 
    procedure TMainForm.Button1Click(Sender: TObject); 
    var strs: TStrings; 
    str: string; 
    begin 
    Str := 'a#0b#0c#0d#0e#0f#0g#0h#0i'; 
    try 
    strs := TStringList.Create; 
    cutString(strs, str,'#0'); 
    Memo1.Lines := strs; 
    finally 
    freeandnil(strs); 
    end; 
    end; 
      

  3.   

    Delphi里有现成的函数:
    function ExtractStrings(Separators, WhiteSpace: TSysCharSet; Content: PChar; Strings: TStrings): Integer;其中Separators是分割符,在此例中是 ' ' //是空格
    WhiteSpace是可以忽略的行首字符,一般不用管
    Content是待分割的字符串
    Strings是分割后,存储各个段的字符串列表实例:Form1上一个Edit1,内容是:“张三 李四  王五”其中有一个或多个空格;
          然后一个Button1,一个Memo1输出结果procedure TForm1.Button1Click(Sender: TObject);
    var
     tmpList: TStrings;
     i: Integer;
    begin
     tmpList:=TStringList.Create;
     try
      ExtractStrings([' '],[],PChar(Edit1.Text),tmpList); //一句话搞定分割
      Memo1.Lines.Clear; //清空,等待输出结果
      for i:=0 to tmpList.Count-1 do
       Memo1.Lines.Append(tmpList[i]); //输出结果,可以看到得到的字符串前后均无空格
             //tmpList[0] 就是   '张三'
             //tmpList[1] 就是   '李四'
             //tmpList[2] 就是   '王五'
     finally
      tmpList.Free;
     end; //end of try
    end;
      

  4.   

    你可以这样写:
    从字符串的第一位开始,当遇到第一个空格时,删掉空格,并把前面的字符串存进a[0];
    遇到第二个空格删去,并把前面字符存进a[1];
    .......
    遇到第n个空格删去,并把前面字符存进a[n-1];
    你要的结果就是a[1]-a[0],a[2]-a[1]........a[n]-a[n-1];
      

  5.   

    DaSaint(齐天大圣) ( ) 信誉:105 
    的方法最值得学习!!!!!!
      

  6.   

    有现成的这么个好东东为什么不用>DaSaint(齐天大圣)'s
      

  7.   

    tstringlist本身有Delimiter属性可以使用,下面是测试代码
    procedure TForm1.Button1Click(Sender: TObject);
    var s :string;
        tmp :Tstringlist;
        i:integer;
    begin
    try
    tmp := Tstringlist.Create;
    S:='RE RTY 34F 34ER';
    tmp.Delimiter :=#32;
    tmp.DelimitedText :=s;
    memo1.Clear;
    for i :=0 to tmp.Count-1 do
      memo1.Lines.Add(tmp.Strings[i]);
    finally
    tmp.Free;
    end;
    end;
      

  8.   

    可以这样写
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      memo1.Lines.Clear;
      memo1.Lines.Delimiter := #32;
      memo1.Lines.DelimitedText := 'sef sdfwe fggg';
    end;