
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;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
|