Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Аналог explod из PHP [D2005]


девушка ©   (2009-03-16 15:09:00) 

Добрый день!

Сегодня один знакомый спросил есть ли в Delphi функция аналогичная explod из PHP для строки с разделителями...

array explode ( string separator, string string [, int limit] ) -- Разбивает строку на подстроки.

Я ответила, что не знаю - всегда сама руками писала что надо.
В ответ услышала, что "Delphi отстал от жизни"

Вот любопытно, есть ли среди стандартных библиотек подобная функция?

PS Я не считаю что Delphi отстал от жизни


Игорь Шевченко   (2009-03-16 18:59:00) [1]

Плохиш ©   (16.03.09 17:55) [6]


> TStringList


clickmaker ©   (16.03.09 16:05) [5]


> ExtractStrings()


Фиги.

Оба метода воспринимают в качестве разделителя один символ, а StringList в дополнение еще и пробел может воспринимать, как разделитель. Грубо говоря, строку по разделителю в два пробела на куски не разобьешь.


Плохиш   (2009-03-16 17:55:00) [2]

TStringList


clickmaker   (2009-03-16 16:05:00) [3]

ExtractStrings()


Игорь Шевченко   (2009-03-16 15:54:00) [4]

Я писал такую.

{
 Преобразование строки с разделителями в список строк.
 Параметры:
  Source    - исходная строка.
  Delimiter - строка-разделитель.
  Parts     - список строк, заполняемый функцией. Создается и уничтожается
              вызывающей функцией.
}
procedure StrBreakApart(const S, Delimeter: string; Parts: TStrings);
var
 curPos: Integer;
 curStr: string;
begin
 Parts.Clear;
 if Length(S) = 0 then
   Exit;
 Parts.BeginUpdate;
 try
   CurStr:= S;
   repeat
     CurPos:= AnsiPos(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;


девушка   (2009-03-16 15:39:00) [5]


> интересные у твоего знакомого "понятия" о жизни :)


вот и я как-то не смогла ничего ответить, кроме как: "пиши тогда на PHP"...


Palladin   (2009-03-16 15:25:00) [6]

...практически на грани без умства :)
не знаю как в других версиях в D6 такой нет, но в версиях выше наверное есть...


Palladin   (2009-03-16 15:23:00) [7]

интересные у твоего знакомого "понятия" о жизни :)


Наверх

Титульная страница Поиск, карта сайта Написать письмо