Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

RichEdit поиск текста

Delphi , Компоненты и Классы , TMemo и TRichEdit

RichEdit поиск текста

Лев ходит по пустыне. В свое время физики предложили свою подборку методов решения задачи о поимке льва в пустыне и помещении его в клетку. А как решают ту же задачу различные деятели эпохи информационных технологий?
Программист на Паскале
Просматривает пустыню полным перебором. Обнаружив льва, строит вокруг него клетку.
Продвинутый программист на Паскале
Сортирует пустыню по возрастанию, после чего ищет льва двоичным поиском и строит вокруг него клетку. Если в процессе строительства лев уходит, бросает работу с криком "Range Check Error".
Программист на Си
Ищет в пустыне камень и помещает его в клетку. Присваивает камню значение "лев".
Продвинутый программист на Си
Присваивает пустыне значение "клетка".
Программист на Си++
Проектирует клетку таким образом, чтобы лев был ее составной частью. При инициализации клетки лев автоматически генерируется внутри.
Программист на Аде
Говорит, что лев и клетка - это объекты разных типов, и нечего морочить ему голову некорректными задачами.
Программист на Дельфи
Пишет во все конференции: "Народ, где взять компонент, который ищет в пустыне льва и помещает его в клетку?"
Железячник
Покупает в зоопарке львицу, делает ей операцию по смене пола и долго пытается запихнуть ее в клетку для канарейки.
Геймер-action'ер
Вооружается супершотганом, плазмаганом, рэйлганом, нэйлганом, шестиствольным пулеметом и бензопилой. Прочесывает пустыню, разнося все на своем пути. Ищет среди убитых льва и пытается обнаружить у него в животе желтый ключ. Если находит, отпирает им клетку и ждет награды.
Геймер-квестовик
Ищет по всей пустыне льва, находит, кладет в карман. Затем ищет по всей пустыне клетку, попутно пытаясь засунуть льва в чайник, башмак, телевизор, ведро с краской и другие попадающиеся на пути емкости.
Геймер-стратег
Поднимает по всей пустыне налоги, чтобы получить деньги на строительство клетки и охотничьих юнитов. К моменту окончания строительства все львы дохнут от голода.
Пользователь интернета
Заходит в свой любимый поисковик, пишет в строке Search "пустыня", ищет в найденном "лев в клетке". Если не находит, говорит, что задача неразрешима.
Вебмастер
Заходит в свой любимый поисковик и пишет в строке Search "пустыня + лев". Создает документ клетка.html и прописывает в нем ссылку на найденное.
Спамер
Рассылает по всей пустыне множество клеток, к каждой из которых привязана бумажка: "Если вы лев, пожалуйста, зайдите внутрь и закройтесь изнутри".
Троянщик
Делает то же, что и спамер, но вместо бумажки снаружи вешает внутри клетки картинку с голой львицей.
Админ
Выкапывает вокруг клетки ров, заполняет его концентрированной кислотой, устанавливает вдоль берега противотанковые ежи и противопехотные мины, все это опутывает колючей проволокой. К проволоке и прутьям клетки подключает провода от генератора высокого напряжения. Вешает на клетку 10 кодовых и 12 амбарных замков. Заходит внутрь, запирается на все замки, пускает ток, ключи проглатывает, коды забывает и говорит, что теперь ему никакой лев не страшен.
Хакер
Нейтрализует кислоту щелочью, перекусывает проволоку, проползает под ежами, перепрыгивает с шестом через мины, отключает ток, взламывает замки и входит в клетку. Не обнаружив внутри льва, матерится с досады, дает пинка админу и уходит обратно в пустыню.


function SearchForText_AndSelect(RichEdit: TRichEdit; SearchText: string): Boolean; 
var 
  StartPos, Position, Endpos: Integer; 
begin 
  StartPos := 0; 
  with RichEdit do 
  begin 
    Endpos := Length(RichEdit.Text); 
    Lines.BeginUpdate; 
    while FindText(SearchText, StartPos, Endpos, [stMatchCase])<>-1 do 
    begin 
      Endpos   := Length(RichEdit.Text) - startpos; 
      Position := FindText(SearchText, StartPos, Endpos, [stMatchCase]); 
      Inc(StartPos, Length(SearchText)); 
      SetFocus; 
      SelStart  := Position; 
      SelLength := Length(SearchText); 
    end; 
    Lines.EndUpdate; 
  end; 
end; 


procedure TForm1.Button1Click(Sender: TObject); 
begin 
  SearchForText_AndSelect(RichEdit1, 'Some Text'); 
end;

Это программный код на Delphi, демонстрирующий поиск текста в RichEdit-контроле и выделение найденного текста.

Содержание кода:

Первая часть определяет функцию SearchForText_AndSelect, которая принимает два параметра: RichEdit - экземпляр класса TRichEdit, и SearchText - строка, которую нужно найти. Функция возвращает булевое значение, указывающее, была ли поисковая операция успешной.

Внутри функции:

  • Устанавливается StartPos в 0, которое будет использоваться как начальная позиция для поиска.
  • Получается длина текста в RichEdit-контроле с помощью Length(RichEdit.Text).
  • Начинается цикл, который продолжается до тех пор, пока не будут найдены все вхождения строки поиска. В каждой итерации:
    • Вызывается FindText, чтобы найти следующее вхождение строки поиска, начиная с StartPos. Если строка не найдена, функция возвращает -1.
    • Если строка найдена, рассчитывается Endpos как длина RichEdit-контрола минус StartPos.
    • Устанавливается Position в позицию, где была найдена строка поиска.
    • Увеличивается StartPos на длину строки поиска, чтобы следующая итерация начала поиск с места после текущего вхождения.
    • Устанавливается фокус на RichEdit-контроле и выбирается найденный текст с помощью SelStart и SelLength.

Вторая часть определяет процедуру Button1Click, которая вызывается при клике кнопки. Эта процедура вызывает SearchForText_AndSelect с контролем RichEdit1 и строкой поиска 'Some Text'.

Для использования этой программы вам нужно создать форму в Delphi, добавить RichEdit-контрол к ней и установить его имя в RichEdit1. Затем вы можете запустить программу и кликнуть на кнопку для поиска текста.

Обратите внимание, что это базовая реализация поиска и выделения текста. Вам может потребоваться добавить дополнительные функции, такие как обработка нескольких строк текста или нечувствительность к регистру.

Рассказ о различных способах программистов и не только найти текст в RichEdit и поместить его в выделенную область.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: TMemo и TRichEdit ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-03-17 23:30:24/0.0043809413909912/0