Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Поиск в обратном порядке


Автор: Pavelbej 10.7.2005, 11:04
Поиск в тексте идет только в одну сторону при выборе "Вниз", "Вверх" дилогового окна "Поиск". Как искать текст в обратную сторону.

Код

procedure TForm1.FindDialog1Find(Sender: TObject);
var
   S : string;
   startpos : integer;
 begin
   with TFindDialog(Sender) do
   begin
     if FSelPos = 0 then
       Options := Options - [frFindNext];
     if frfindNext in Options then
     begin
       StartPos := FSelPos + Length(Findtext);
       S := Copy(Memo1.Lines.Text, StartPos, MaxInt);
     end
     else
     begin
       S := Memo1.Lines.Text;
       StartPos := 1;
     end;
     FSelPos := Pos(FindText, S);
     if FSelPos > 0 then
     begin
       FSelPos := FSelPos + StartPos - 1;
       Memo1.SelStart := FSelPos - 1;
       Memo1.SelLength := Length(FindText);
       Memo1.SetFocus;
     end
     else
     begin
       if frfindNext in Options then
         S := Concat('There are no further occurences of "', FindText,
           '" in Memo1.')
       else
         S := Concat('Could not find "', FindText, ' in text.');
       MessageDlg(S, mtError, [mbOK], 0);
     end;
   end;

end;

Автор: SergeBS 11.7.2005, 17:07
А подумать?
Файл читается с начала до конца.
Пишем мы тоже с начала до конца.
слово абзац (например) при чтении с конца на начало превратится в цазба.
Дальше объяснять? smile

Автор: Pavelbej 11.7.2005, 23:33
Я говорю про то что выбирая радиокнопки "Вверх" и "Вниз" ничего не меняется

Автор: mvdr 13.7.2005, 02:36
Pavelbej, коды а эти кнопки разные?
Добавлено @ 02:45
можно извратиться: есть исходный текст, делаем по нему поиск на наличие пробелов (от пробела до пробела): т.е. создаем другой текст. По измененному тексту и организуем поиск.
Т.е. В новое Мемо пишем на отдельную строку слово и рядом позицию начального символа в оригинале (точнее даже лучше сделать так:

Код

...
0001 яблочный 
0010 пирог
....

Теперь нам надо найти слово "пирог": Ищем его в Мемо2, затем смотрим на начальную позицию в Мемо1 - и выделяем в Мемо1.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)