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.   

    用不了这么复杂的var
      abc:TStringList;
    begin
      abc := TStringList.Create;
      abc.Delimiter := '#';
      abc.DelimitedText  := '1234.23#43432.3231#2342323#23423#1212.3232';
    然后  
    abc.Strings[0] 中就是 1234.23;
      

  2.   

    我试了一个,TStringList有 Delimiter这个属性
       
      

  3.   

    我试了一个,TStringList有 Delimiter这个属性吗?
       
      

  4.   

    var
      MyStrings : array of String;
      Temp : string;
      i : integer;
    begin
      Temp := '1234.23#43432.3231#2342323#23423#1212.3232';
      I := lastDelimiter('#',temp);  while (i<>0) and (Temp <>'') do
      begin
        setlength(MyStrings,Length(MyStrings) + 1);
        MyStrings[High(MyStrings)] := Copy(Temp,I+1,Length(Temp) - I -1);
        Delete(Temp,I,Length(Temp) - I);
        I := LastDelimiter('#',temp);
      end;  setlength(MyStrings,Length(MyStrings) + 1);
      MyStrings[High(MyStrings)] := temp;//加上最后一个;  for I := 0 to High(MyStrings) do
        ShowMessage(MyStrings[I]);
      

  5.   

    经过证明:以下程序完全正确。并特别简单。请给他加满分。回复人: xzq() (2001-9-27 13:00:00)  得0分 
    用不了这么复杂的var
      abc:TStringList;
    begin
      abc := TStringList.Create;
      abc.Delimiter := '#';
      abc.DelimitedText  := '1234.23#43432.3231#2342323#23423#1212.3232';
    然后  
    abc.Strings[0] 中就是 1234.23;
     
      

  6.   

    我也试了一个,TStringList有 Delimiter这个属性吗?