Показать сообщение отдельно
  #2  
Старый 28.03.2009, 21:38
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Для поиска надо сделать сортировку слов. Если можно воспользоваться другим компонентом, то так:
Код:
Var List: TStringList;
     Index: Integer; 
begin
 List := TStringList.Create;
 List.Text := Memo1.Text;
 List.Sort;
 if List.Find('винт',Index) then MessageBox('Найдено в строке '+IntToStr(Index));
если-же надо именно через мемо, тогда уже посложнее:
Код:
procedure Sort(M: TMemo);
Var i,j: Integer;
    S: String;
begin
 for i := 0 to Memo1.Lines.Count - 1
 do for j := i+1 to Memo1.Lines.Count - 1
    do if Memo1.Lines[j] < Memo1.Lines[i]
       then begin
            S := Memo1.Lines[i];
            Memo1.Lines[i] := Memo1.Lines[j];
            Memo1.Lines[j] := S;
            end;
end;
function Find(M: TMemo; S: String; var Index: Integer): Boolean;
 function SubFind(M: TMemo; Min,Max: Integer; S: String): Integer;
 begin
  Result := -1;
  if Max < Min then Exit;
  Result := Min + (Max - Min) shr 1;
  if S = M.Lines[Result] then Exit;
  if S > M.Lines[Result]
  then Result := SubFind(M, Result+1, Max, S)
  else Result := SubFind(M, Min, Result-1, S);
 end;
begin
 Index := SubFind(M,0,M.Lines.Count-1,S);
end;

Var Index: Integer; 
begin
 Sort(Memo1); 
 if Find(Memo1,'винт',Index) then MessageBox('Найдено в строке '+IntToStr(Index));
end;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием