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)
Комментариев нет:
Отправить комментарий