![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать следующее вхождение pos-a
WebSQLNeederrr © (2008-06-07 17:50:00)Единственное что приходит на ум это следующий алгоритм (задача найти второй пробел в предложении - то есть начало третьего слова):
i:=pos(str,' ');
substr:=copy(str,i,length(str)-i);
i:=pos(substr,' ');
Может есть более простой способ?
{RASkov} (2008-06-07 17:57:00) [41]> задача найти второй пробел в предложении - то есть начало третьего слова):
В RxLib и в ее RxStrUtils есть специальные функции для этого....
{RASkov} (2008-06-07 17:54:00) [42]D7 - StrUtils
До 7 вроде небыло её....
function PosEx(const SubStr, S: string; Offset: Cardinal = 1): Integer;
var
I,X: Integer;
Len, LenSubStr: Integer;
begin
if Offset = 1 then
Result := Pos(SubStr, S)
else
begin
I := Offset;
LenSubStr := Length(SubStr);
Len := Length(S) - LenSubStr + 1;
while I <= Len do
begin
if S[I] = SubStr[1] then
begin
X := 1;
while (X < LenSubStr) and (S[I + X] = SubStr[X + 1]) do
Inc(X);
if (X = LenSubStr) then
begin
Result := I;
exit;
end;
end;
Inc(I);
end;
Result := 0;
end;
end;
WebSQLNeederrr (2008-06-07 17:52:00) [43]нет, а в какон он модуле?
{RASkov} (2008-06-07 17:50:00) [44]Есть ли у тебя PosEx?