Показать сообщение отдельно
  #116  
Старый 12.08.2010, 00:18
lmikle lmikle вне форума
Модератор
 
Регистрация: 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;        
Ответить с цитированием