String → StringList
Материал из DRKB
String --> StringList[править | править код]
{ **** UBPFD *********** by delphibase.endimus.com ****
>> Преобразование строки с разделителями в StringList.
Преобразование строки с разделителями в StringList или наследник TStrings.
Навеяно одноименной процедурой из InfoPower :-)
Зависимости: Classes
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;
Author: Игорь Шевченко, Woll2Woll software (original)
Source: delphibase.endimus.com
ID: 00920
Можно сделать значительно проще:
procedure StrBreakApart(const S, Delimeter: string; Parts: TStrings);
begin
Parts.Text := StringReplace(S, Delimeter, #13#10, [rfReplaceAll, rfIgnoreCase]);
end;
Author: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)
ID: 00921