Форум: "Начинающим";
Текущий архив: 2007.06.03;
Скачать: [xml.tar.bz2];
ВнизПоиск текста Найти похожие ветки
← →
ФФФФ (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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.046 c