type
 TResultArray = array of string;
function SplitString(const source, ch: string): TResultArray;
var
 temp: string;
 i: integer;
begin
 temp := source;
 i := pos(ch, source);
 while i <> 0 do
 begin
   SetLength(Result, Length(Result) + 1);
   Result[Length(Result) - 1] := copy(temp, 0, i - 1);
   delete(temp, 1, i);
   i := pos(ch, temp);
 end;
 SetLength(Result, Length(Result) + 1);
 Result[Length(Result)-1] := Temp;
end;
function SplitString(const source,ch:string):tstringlist;
var
temp:string;
i:integer;
begin
result:=tstringlist.Create;
temp:=source;
i:=pos(ch,source);
while i<>0 do
begin
  result.Add(copy(temp,0,i-1));
  delete(temp,1,i);
  i:=pos(ch,temp);
end;
result.Add(temp);
end;
调用:
s:=splitstring('afsdfsdaaa|bbfdsfsdb|ccc','|');
for i:=0 to s.Count-1 do
b:=b+s.Strings[i]+#13;
showmessage(b);
s.free;