怎样把一个字符串分割成字符串数组?该怎么处理

怎样把一个字符串分割成字符串数组?
s   =   'AAA|BBB|CCC|DDD ';
怎样分割成:
  ss[0]   =   'AAA ';
  ss[1]   =   'BBB ';
  ss[2]   =   'CCC ';
  ss[3]   =   'DDD ';

------解决方案--------------------
var ss:tstringlist;
s:string;
begin
s:= 'AAA|BBB|CCC|DDD ';
ss:=TStringlist.Create;
ss.Delimiter:= '| ';
ss.DelimitedText:=s;
for i:=0 to ss.count-1 do
begin
showmessage(ss.string[i]);
end;
------解决方案--------------------
function ExtractStrings(Separators, WhiteSpace: TSysCharSet; Content: PChar; Strings: TStrings): Integer;
------解决方案--------------------
ExtractStrings([ '| '], [], PChar(s), ss);
------解决方案--------------------
一、给一楼改一下:

var ss:tstringlist;
s:string;
i : integer;
begin
s:= 'AAA|BBB|CCC|DDD ';
ss:=TStringlist.Create;
ss.Delimiter:= '| ';
ss.DelimitedText:=s;
for i:=0 to ss.count-1 do
begin
showmessage(ss[i]);
end;
SS.Free;
end;

二、用StringReplace函数

var
S : string;
SS : TStringList;
I : integer;
begin
S := 'AAA|BBB|CCC|DDD ';
SS := TStringList.Create;
SS.Text := StringReplace(S, '| ', #10, [rfReplaceAll]);
for i:=0 to ss.count-1 do
begin
showmessage(ss[i]);
end;
SS.Free;
end;