
12.08.2010, 00:18
|
|
Модератор
|
|
Регистрация: 17.04.2008
Сообщения: 8,111
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
|
|
поиск вверх/вниз:
Код:
type
TFindDirection = (fdUp, fdDown);
function FindText(APattern, AText : String;
APosition : Integer;
ADirection : TFindDirection;
ACaseSensitive : Boolean) : Integer;
var
FStep : Integer;
FFinish : Integer;
FPosition : Integer;
FPatternLen : Integer;
begin
Result := -1;
if ADirection = fdUp
Then
Begin
FStep := -1;
FFinish := 0;
End
Else
Begin
FStep := 1;
FFinish := Length(AText);
End;
If ACaseSensitive Then APattern := AnsiUpperCase(APattern);
FPosition := APosition;
FPatternLen := Length(APattern);
While FPosition <> FFinish Do
Begin
If ACaseSensitive
Then
Begin
If AText[FPosition] = APattern[1] Then
Begin
If AnsiCompareStr(Copy(AText,FPosition,FPatternLen),APattern) = 0 Then
Begin
Result := FPosition;
Break;
End;
End;
End
Else
Begin
If AnsiUpperCase(AText[FPosition]) = APattern[1] Then
Begin
If AnsiCompareText(Copy(AText,FPosition,FPatternLen),APattern) = 0 Then
Begin
Result := FPosition;
Break;
End;
End;
End;
FPosition := FPosition + FStep;
End;
end;
|