procedure l3ParseWordsEx(const aStr : Tl3WString; anAction : Tl3WordAction; const aDelim : TCharSet); {* - разбирает строку на слова. } var l_Offset : Long; l_WordFinish : Long; begin if not l3IsNil(aStr) then begin l_Offset := 0; while (l_Offset < aStr.SLen) do begin while (l_Offset < aStr.SLen) AND (aStr.S[l_Offset] in aDelim) do Inc(l_Offset); l_WordFinish := l_Offset; while (l_WordFinish < aStr.SLen) AND not (aStr.S[l_WordFinish] in aDelim) do Inc(l_WordFinish); // - здесь добавляем слово if (l_WordFinish > l_Offset) then begin if not anAction(l3PCharLen(aStr.S + l_Offset, l_WordFinish - l_Offset, aStr.SCodePage), l_WordFinish = aStr.SLen) then break; l_Offset := l_WordFinish; // - смещаемся на следующее слово end;//l_WordFinish > l_Offset end;//l_Offset < l_S.SLen end;//not l3IsNil(aStr) end;
Блог человека, который 18-ть лет программирует на Delphi. И 25 лет программирует вообще. VCL, UML, MDA, тесты. Это не "учебник", это - "заметки на полях".
четверг, 17 октября 2013 г.
Коротко. Ещё раз о разбиении строк на "слова" и альтернативе "алгоритму маляра"
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий