Использование PosEx взамен Pos
Материал из DRKB
Использование PosEx взамен Pos[править | править код]
В Delphi 7 в модуле StrUtils внесены некоторые изменения. Есть новая функция: PosEx.
Обьявление этих функций:
function Pos(Substr: string; S: string): Integer;
function PosEx(const SubStr, S: string; Offset: Cardinal = 1): Integer;
Новая функция PosEx, позволяет указать начальную позицию поиска внутри строки, что избавит вас от необходимости изменения исходной строки. Не забудьте указать модуль StrUtils.
Ниже приведена реализация функции в модуле StrUtils (если вы используете более старшую версию среди разработки вы сможете сами добавить этот код и использовать его вместо функции Pos):
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;
Source: http://forum.sources.ru
ID: 00085