![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Victor |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 225 Регистрация: 29.10.2003 Репутация: нет Всего: нет |
Люди как быть
Поиск работает, но мне надо 1)Чтобы если я несколько раз попрошу найти тот или иной текст т.е я тыркаю кнопку Найти она только 1 раз работает 2)А как ещё заменить на текст который я ввел в поиске ? |
|||
|
||||
| dm9 |
|
|||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва Репутация: 6 Всего: 137 |
1. "Не" с глаголами пишется раздельно.
2. Ответ на первый вопрос:
Работает поиск вниз начиная с позиции курсора. Поиск вверх делаешь аналогично, добавить только одно условие. 3. Ответ на второй вопрос: там рядом кнопочка ReplaceDialog. |
|||
|
||||
| December |
|
|||
![]() Antitheorist ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4423 Регистрация: 14.8.2002 Где: Харьков Репутация: 8 Всего: 57 |
Victor Возможно там ещё такая фишка есть: чтобы Ричедит доскроллился до позиции курсора, нужно делать perform(EM_ScrollCaret,0,0);
|
|||
|
||||
| Victor |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 225 Регистрация: 29.10.2003 Репутация: нет Всего: нет |
December да вроде сам скролллится
dm9 спасибо конечно, но немог бы ты сделать коментарии я никак непойму эту функцию Pos, смотрел в хелпе тама function Pos(Substr: string; S: string): Integer; Description Pos searches for a substring, Substr, in a string, S. Substr and S are string-type expressions. Pos searches for Substr within S and returns an integer value that is the index of the first character of Substr within S. Pos is case-sensitive. If Substr is not found, Pos returns zero Но я непойму где ты сделал чтобы все время можно было искатать и где проверка кнопки вверх/вниз чтоли, если что-то менять то он будет искать только вверх или как ? |
|||
|
||||
| dm9 |
|
|||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва Репутация: 6 Всего: 137 |
Ф-ция Pos (SubS, S : String) : Integer;
ищет первую подстроку SubS в строке S и возвращает номер символа, с которого начинается эа подстрока. Если подстрока не найдена, возвращается ноль. Нумерация символов - с единицы. Пример. SubS := 'bc'; S := 'abcdefg'; X := Pos (SubS, S); //Вернёт 2 SubS := 'bc'; S := 'asdbcbcbcbc'; X := Pos (SubS, S); //Вернёт 4 У меня проверки вверх/вниз нету, всё время ищет вниз. Более подробно если надо, распишу чуть позже. Это сообщение отредактировал(а) dm9 - 9.2.2004, 14:43 |
|||
|
||||
| Paradox |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1135 Регистрация: 18.11.2002 Где: Россия Репутация: нет Всего: 1 |
Имелось ввиду что вернет 0 наверное -------------------- --- |
|||
|
||||
| dm9 |
|
|||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва Репутация: 6 Всего: 137 |
Сорри, я в примерах лажу написал. Торопился очень. Всё исправил.
|
|||
|
||||
| Victor |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 225 Регистрация: 29.10.2003 Репутация: нет Всего: нет |
А про Copy и что тама дальше можеш объяснить, SelStart я так понимаю это где начинаеться выделение строки или типа того, а sellength это длина выделенного текста или как?
Pos (FindDialog1.FindText, Copy (Richedit1.Text, Richedit1.SelStart + 1 + Richedit1.SelLength, Length(Richedit1.Text) - Richedit1.SelStart - Richedit1.SelLength)); и что это: Richedit1.HideSelection:=false; я в хелпе смотрел, жалуюсь на свой инглиш так и недошло Спасибо dm9 =) |
|||
|
||||
| dm9 |
|
|||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва Репутация: 6 Всего: 137 |
Построчно:
Сначала надо выделить строку, в которой будет производиться поиск. Для этого воспользуемся функцией Copy (S:String; I:Integer; N:Integer) : String; Эта ф-ция возвращает подстроку строки S начиная с I-го символа длиной N. Пример: S := 'asdfghjkl'; S := Copy (S,2,6); //Вернёт 'sdfghj'; После этого ищем нужную подстроку ф-цией Pos. X := Pos (FindDialog1.FindText, {Строка, которая ищется} Copy (Richedit1.Text, {Весь текст в RichEdit} Richedit1.SelStart + 1 + Richedit1.SelLength, {Индекс, равен позиции начала выделения плюс длина выделения (плюс один, так как первая позиция курсора - ноль), таким образом, мы ищем конец выделения} Length(Richedit1.Text) - Richedit1.SelStart - Richedit1.SelLength)); {А это длина текста от конца выделения до конца текста} if X <> 0 //Если строка найдена then begin RichEdit1.HideSelection := false; {Разрешить выделение, это можно сделать один раз при старте приложения} RichEdit1.SelStart := X + Richedit1.SelStart + Richedit1.SelLength - 1; {Начало выделения} RichEdit1.SelLength := Length (Finddialog1.FindText); {Его длина} end else MessageDlg('Строка ' + FindDialog1.FindText + ' не найдена!', mtConfirmation, [mbyes], 0); {Если строка не найдена, сообщить об этом} end; Повторю, это поиск вниз. Для того, чтобы работал поиск вверх, и работали всякие опции типа "с учётом регистра", это надо обрабатывать самостоятельно. Все параметры поиска можно узнать из FindDialog1.Options Например, if frDown in FindDialog1.Options then ... //Поиск вниз else ... //Поиск вверх; На другие параметры поиска (кроме frDown) можно посмотреть в Object Inspector-е. Это сообщение отредактировал(а) dm9 - 9.2.2004, 17:20 |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |