String --> StringList

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Преобразование строки с разделителями в StringList.
Преобразование строки с разделителями в StringList или наследник TStrings.
Навеяно одноименной процедурой из InfoPower :-)
Зависимости: Classes
Автор: Игорь Шевченко, <a href="mailto:whitefranz@hotmail.com">whitefranz@hotmail.com</a>, Москва
Copyright: Игорь Шевченко, Woll2Woll software (original)
Дата: 30 апреля 2002 г.
***************************************************** }

procedure StrBreakApart(const S, Delimeter: string; Parts: TStrings);
var
 CurPos: integer;
 CurStr: string;
begin
 Parts.clear;
 Parts.BeginUpdate();
 try
  CurStr := S;
  repeat
  CurPos := Pos(Delimeter, CurStr);
  if (CurPos > 0) then
  begin
  Parts.Add(Copy(CurStr, 1, Pred(CurPos)));
  CurStr := Copy(CurStr, CurPos + Length(Delimeter),
  Length(CurStr) - CurPos - Length(Delimeter) + 1);
  end
  else
  Parts.Add(CurStr);
  until CurPos = 0;
 finally
  Parts.EndUpdate();
 end;
end;
Пример использования:
var
 Tmp: StringList;
begin
 Tmp := TStringList.Create();
 StrBreakApart('Text1<BR>Text2<BR>Text3<BR>Text4', '<BR>', Tmp);
 // После вызова Tmp содержит
 // Text1
 // Text2
 // Text3
 // Text4
 ...
 Tmp.Free();
end;

Можно сделать значительно проще:

procedure StrBreakApart(const S, Delimeter: string; Parts: TStrings);

{©Drkb v.3(2007): <a href="http://www.drkb.ru" title="www.drkb.ru">www.drkb.ru</a>,

 ®Vit (Vitaly Nevzorov) - nevzorov@yahoo.com}


begin

 Parts.text:=StringReplace(S, Delimeter, #13#10, [rfReplaceAll, rfIgnoreCase]);

end;

Автор: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...