Использование PosEx взамен Pos
Falk0ner, вс, 06/07/2008 - 15:34.
Новая функция PosEx, позволяет указать начальную позицию поиска внутри строки, что избавит вас от необходимости изменения исходной строки. Незабудьте указать модуль StrUtils.
Ниже приведена реализация функции в модуле StrUtils (если вы используете более старшую версию среды разработки вы сможете сами добавить этот код и использовать его вместо функции Pos):
Автор RoboSol
Взято из http://forum.sources.ru
В Delphi 7 в модуле StrUtils внесены некоторые изменения.
Есть новая функция: PosEx.
Обьявление этих функций:
Function Pos(Substr: String; S: String): Integer;
Function PosEx(Const SubStr, S: String; Offset: Cardinal = 1): 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;
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;
Автор RoboSol
Взято из http://forum.sources.ru
Отправить комментарий