procedure StrToStrings(S: AnsiString; Sep: AnsiString; 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 := StrLeft(S, I - 1);
    List.Add(Left);
    Delete(S, 1, I + L - 1);
    I := Pos(Sep, S);
  end;
  if S <> '' then
    List.Add(S);
end;
function StrLeft(const S: AnsiString; Count: Integer): AnsiString;
begin
  Result := Copy(S, 1, Count);
end;

解决方案 »

  1.   

    Delete(S, 1, I + L - 1);
    此句是否有错?
      

  2.   

    String同Turbo Pascal中的string类型,最大长度为256字节,而且是固定长度的,变量一经定义无法改变长度。
    AnsiString是动态的字符串,最大长度为2GB。
    实际Delphi使用中,通常用AnsiString。
      

  3.   

    1.用copy()函数吧,挺简单的。
    2.基本上没什么区别,只是AnsiString是以null结束的字符串,
      而string则不是。
      

  4.   

    这是JEDI函数,经过了严格的测试,不会有错的。