Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.06.03;
Скачать: CL | DM;

Вниз

Поиск текста   Найти похожие ветки 

 
ФФФФ   (2007-05-12 16:39) [0]

Спрошу мож есть и не надо изобретать велосипед?

хочу найти определенное слово-нашел, найти дальше


 
DVM ©   (2007-05-12 16:41) [1]


> Спрошу мож есть и не надо изобретать велосипед?

Изобретать не надо только окно поиска. Оно уже есть готовое. FindDialog. Сам поиск реализовывать надо самому с помощью функций для работы со строками.


 
ФФФФ   (2007-05-12 16:46) [2]

тоесть поиск начиная с первой строки кончая последней,
но не факт что строка начинается с искомым словом

FOR a=1 to eof  алгоритм перебор строк
в каждой строке надо начиная с первого символа сравнивать с
образцом а потом сдвигать на символ, пример, скорости не ахти(

123456RED)щщвв

ищем слово RED

123 <> RED
234 <> RED
345 <> RED
456 <> RED
56R <> RED
6RE <> RED
RED = RED  нашли слово  выход

??


 
Virgo_Style ©   (2007-05-12 16:49) [3]

см. pos


 
DVM ©   (2007-05-12 16:55) [4]


procedure TForm1.AFindExecute(Sender: TObject);
begin
{запоминание позиции курсора}
SPos:=RichEdit1.SelStart;
with FindDialog1 do begin
 {начальное значение текста поиска - текст, выделенный в RichEdit1}
 FindText:=RichEdit1.SelText;
 {позиционирование окна диалога внизу RichEdit1}
 Position:=Point(Form1.Left,Form1.Top+RichEdit1.Top+RichEdit1.Height);
 {удаление из диалога кнопок "Вверх", "Вниз",
  "Только  слово целиком"}
 Options:=Options + [frHideUpDown,frHideWholeWord];
 {выполнение}
 Execute;
end;
end;

procedure TForm1.FindDialog1Find(Sender: TObject);
begin
with FindDialog1 do begin
if frMatchCase in Options
 {поиск с учетом регистра}
 then RichEdit1.SelStart:=Pos(FindText,
                          Copy(RichEdit1.Lines.Text,SPos+1,
                            Length(RichEdit1.Lines.Text)))+Spos-1
 {поиск без учета регистра}
 else RichEdit1.SelStart:=Pos(AnsiLowerCase(FindText),
                   AnsiLowerCase(Copy(RichEdit1.Lines.Text,SPos+1,
                   Length(RichEdit1.Lines.Text))))+Spos-1;
 if RichEdit1.SelStart>=Spos
  then begin
   {выделение найденного текста}
   RichEdit1.SelLength:=Length(FindText);
   {изменение начальной позиции поиска}
   SPos:=RichEdit1.SelStart+RichEdit1.SelLength+1;
  end
  else
   if MessageDlg(
         "Текст ""+FindText+"" не найден. Продолжать диалог?",
         mtConfirmation,mbYesNoCancel,0) <> mrYes
   then CloseDialog;
end;
RichEdit1.SetFocus;
end;



Страницы: 1 вся ветка

Текущий архив: 2007.06.03;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.03 c
15-1178289310
Cyrax
2007-05-04 18:35
2007.06.03
Microsoft Visual C++ Runtime Library: Runtime error


15-1178645617
Витян
2007-05-08 21:33
2007.06.03
Помогите, пожалуйста, найти ошибку в решении задачи!


15-1178564140
iZEN
2007-05-07 22:55
2007.06.03
Ой чо деется, Microsoft торгует Линуксом!


11-1160741126
Thaddy
2006-10-13 16:05
2007.06.03
small bug in objects.pas


2-1178820436
Riply
2007-05-10 22:07
2007.06.03
Ожидание окончания "инициализации процесса".