Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 15.11.2012, 17:48
I, Dementia I, Dementia вне форума
Прохожий
 
Регистрация: 15.11.2012
Сообщения: 1
Репутация: 10
По умолчанию Полноценная функция MS Word "Найти далее", richedit1

Здравствуйте. Нужно написать программу для процедуры поиска в richedit1 функции Найти далее, причем, идентичность возможностям оной в Word'e должна быть полная. В интернете повсюду нахожу только кусками разные части нужного кода. При совмещении крыша едет набекрень

Вот что намалевал. Работает, но спустя несколько замен поисковых слов, начинает работать некорректно.

До регистра и примочек дела нет, это уже дело десятое. Искал бы нормально и упорядоченно и то неплохо было бы.

В коде, наверное, черт ногу сломит, но хоть идею подскажите, как по-человечески написать, пожалуйста.

Код:
var
  i,j,l,m,p,flag:integer;
  k:array[1..1000] of integer;
  s:array[1..1000] of string;

procedure TForm1.N20Click(Sender: TObject);
begin
 p:=1; flag:=0; l:=1; m:=0;
 FindDialog1.Execute;
 end;

procedure TForm1.FindDialog1Find(Sender: TObject);
  begin

  inc(m);
  s[m]:=finddialog1.findtext;            
  richedit1.Text:=richedit1.text+s[m];

  if s[m]<>s[m-1] then

      begin
        flag:=0;                          
        for i:=1 to p do k[i]:=0;
        p:=1;
      end;

  with richedit1 do

  for i:=1 to length(text) do

    begin
      if text[i]=finddialog1.findtext[1] then
        for j:=1 to length(finddialog1.findtext) do
          if text[i+j-1]=finddialog1.findtext[j] then inc(k[p]);
      if k[p]=length(finddialog1.findtext) then begin k[p]:=i-1; inc(p); end else k[p]:=0
    end;


     if p-1=0 then showmessage('Закончен просмотр элемента. искомый элемент не найден')
     else
       with richedit1 do
       begin
        HideSelection := False;
        if flag=1 then
          begin
            inc(l);
            SelStart := k[l];
          end
        else selstart:=k[l];
        SelLength := Length(FindDialog1.FindText);
       end;

     flag:=1;
Ответить с цитированием
  #2  
Старый 16.11.2012, 05:47
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от I, Dementia
Здравствуйте. Нужно написать программу для процедуры поиска в richedit1 функции Найти далее, причем, идентичность возможностям оной в Word'e должна быть полная. В интернете повсюду нахожу только кусками разные части нужного кода. При совмещении крыша едет набекрень
У TRichEdit есть специальный метод FindText для поиска. Примеры использования: "RichEdit поиск текста", "RichEdit замена текста".
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:44.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025