Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2012, 13:59   #1
[DisAssembleR]
Пользователь
 
Регистрация: 30.06.2011
Сообщений: 28
По умолчанию SynEdit - поиск и замена. Delphi

Доброго времени суток всем, кто сейчас это читает.

Встала такая проблема: использую SynEdit для подсветки синтаксиса. Только не пойму вот, как организовать поиск в этом самом SynMemo, не используя стандартный FindDialog (совсместно с FindDialog я сумел реализовать поиск).

Также интересует, что такое SynEditSearch и с чем его едят.

Замену сделал, но она не шибко мне нравится. Пытался поправить - либо не работает, либо просто выдает ошибку.

Справки как таковой, по компоненту, я не обнаружил.
В Делфи всего лишь полгода, так что не особо пока понимаю многие вещи.

Прошу помочь хоть как-нибудь, если кто сможет.
Заранее спасибо.

Последний раз редактировалось [DisAssembleR]; 17.04.2012 в 14:07.
[DisAssembleR] вне форума Ответить с цитированием
Старый 21.04.2012, 22:31   #2
[DisAssembleR]
Пользователь
 
Регистрация: 30.06.2011
Сообщений: 28
По умолчанию

Вот это я использую для поиска первого вхождения желаемого текста.
Код:
procedure TForm3.sButton2Click(Sender: TObject);
begin
  Form1.SynEditSearch1.Pattern := SynMemo1.Text;
  sOpt := sOpt + [ssoMatchCase];
  Form1.SynEditSearch1.Options := sOpt;
if Form1.SynEditSearch1.FindFirst(sEdit1.Text) > -1 then
begin
  SynMemo1.SetFocus;
  SynMemo1.HideSelection := False;
  SynMemo1.SelStart := pos(sEdit1.Text, SynMemo1.Text) - 1;
  SynMemo1.SelLength := Length(sEdit1.Text);
end
else
  ShowMessage('not Find text');
end;
Это - для последующего поиска.
Код:
procedure TForm3.sButton3Click(Sender: TObject);
begin
  Form1.SynEditSearch1.Pattern := SynMemo1.Text;
  sOpt := sOpt + [ssoMatchCase];
  Form1.SynEditSearch1.Options := sOpt;
if Form1.SynEditSearch1.FindFirst(sEdit1.Text) > -1 then
begin
  SynMemo1.SetFocus;
  SynMemo1.HideSelection := False;
  SynMemo1.SelStart := posEx(sEdit1.Text, SynMemo1.Text, SynMemo1.CaretX) - 1;
  SynMemo1.SelLength := Length(sEdit1.Text);
end
else
  ShowMessage('not Find text');
end;
Только вот незадача - последующий поиск работает через раз.
Может, я что-то не так делаю?
[DisAssembleR] вне форума Ответить с цитированием
Старый 08.06.2012, 12:15   #3
[DisAssembleR]
Пользователь
 
Регистрация: 30.06.2011
Сообщений: 28
По умолчанию

Все, разобрался. Тему можно закрывать. Кому интересно, держите:
Код:
var
  sOption : TSynSearchOptions;
begin
  RichEdit.SearchEngine := Form1.SynEditSearch1;
  Form1.SynEditSearch1.Pattern := ComboBox1.Text;
  sOptions := [];
if CheckBox1.Checked then
  include(sOptions, ssoWholeWord);

if CheckBox2.Checked then
  include(sOptions, ssoMatchCase);

if RadioButton1.Checked then
  exclude(sOptions, ssoBackwards);

if RadioButton2.Checked then
  include(sOptions, ssoBackwards);

  Form1.SynEditSearch1.FindAll(RichEdit.Lines.Text);
if Form1.SynEditSearch1.ResultCount > 0 then
begin
  RichEdit.SelStart := Form1.SynEditSearch1.Results[Form1.SynEditSearch1.Next] - 1;
  RichEdit.SelLength := Length(ComboBox1.text);
  Button2.Enabled := true;
end
else
begin
  MessageDlg({'Строка поиска "'} str + ComboBox1.Text + str1{' не может быть найдена!'}, MtInformation, [mbOk], 0);
  RichEdit.SetFocus;
end;
end;
[DisAssembleR] вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск и замена в столбце Garrison Microsoft Office Excel 24 12.09.2012 17:31
поиск и замена evdss Microsoft Office Excel 7 18.03.2011 02:05
Поиск и замена текста Jantar Общие вопросы Delphi 10 26.07.2010 08:26
поиск и замена gabbachild Microsoft Office Excel 4 26.01.2010 17:16
Поиск и замена слов. ildarn Общие вопросы C/C++ 1 25.11.2009 19:01