Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Delphi Неизвестная кодировка http://www.cyberforum.ru/delphi/thread1780827.html
Всем привет. Вот кусок кода программы aurl := Format('https://api.vk.com/method/database.getCountries?access_token=%s', ); aurl := aurl + '&need_all=1&count=5&v=5.52'; //250 ...
Delphi Rad Studio 10 Seattle: ошибка при установке code site не могу установить code site, возникает ошибка лицензии. Можно ли скачать code site отдельно, а не через rad studio? http://www.cyberforum.ru/delphi/thread1779268.html
Delphi Предопределение свойств класса сложных типов (e.g. record)
Как можно предопределить составное свойство класса? т.е. например есть класс: TSomeClass = class(TSomeAnotherClass) private someVar: TRect; published property someProp:tRect read...
Delphi Как в Delphi использовать исходники на C/C++?
Есть набор исходников на C/C++. Как можно их использовать в Delphi? Может как-то скомпилировать и подключить объектные файлы? Какие есть способы?
Delphi Задания выполнить в Delphi http://www.cyberforum.ru/delphi/thread1777722.html
Delphi Поиск файлов на сайте Всем доброго времени суток. Есть сайт http:\\... на котором расположены файлы по папкам, вообщем что-то типа дерева директив. Необходимо на этом сайте найти файлы заданного расширения. На диске я... подробнее
Ariomex
0 / 0 / 0
Регистрация: 17.07.2016
Сообщений: 42
06.08.2016, 22:01  [ТС] 0

Плагин под Notepad++

06.08.2016, 22:01. Просмотров 1680. Ответов 9
Метки (Все метки)

Ответ

Пытаюсь организовать замену текста во всём документе с использованием регулярных выражений средствами Notepad++. Нашёл пример для С++:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/////////////////////////////////////
// @mfunc Replace a text in a selection or in the complete file multiple times
// @rvalue int | number of replacements
//
int CScintillaWnd::ReplaceAll(
                              LPCSTR szFind, 
                              LPCSTR szReplace, 
                              BOOL bUseSelection)
{
   int nCount = 0;
// different branches for replace in selection or total file
   if (bUseSelection)
   {
//    get starting selection range
      long lLen = 0;
      long lStart = GetSelectionStart();
      long lEnd = GetSelectionEnd();
//    set target to selection
      SendMessage(SCI_SETTARGETSTART, lStart);
      SendMessage(SCI_SETTARGETEND, lEnd);
//    try to find text in target for the first time
       long lPos = SendMessage(SCI_SEARCHINTARGET, strlen(szFind), (long)szFind);
//    loop over selection until end of selection reached - moving the target start each time
      while (lPos < lEnd && lPos >= 0)
      {
         if (m_nSearchflags & SCFIND_REGEXP) // check for regular expression flag
            lLen = SendMessage(SCI_REPLACETARGETRE, strlen(szReplace), (long)szReplace);
         else
            lLen = SendMessage(SCI_REPLACETARGET, strlen(szReplace), (long)szReplace);
//       the end of the selection was changed - recalc the end
         lEnd = GetSelectionEnd();
//       move start of target behind last change and end of target to new end of selection
         SendMessage(SCI_SETTARGETSTART, lPos+lLen);
         SendMessage(SCI_SETTARGETEND, lEnd);
//       find again - if nothing found loop exits
          lPos = SendMessage(SCI_SEARCHINTARGET, strlen(szFind), (long)szFind);
         nCount++;
      }
   }
   else
   {
//    start with first and last char in buffer
      long lLen = 0;
      long lStart = 0;
      long lEnd = SendMessage(SCI_GETTEXTLENGTH, 0, 0);
//    set target to selection
      SendMessage(SCI_SETTARGETSTART, lStart, 0);
      SendMessage(SCI_SETTARGETEND, lEnd, 0);
//    try to find text in target for the first time
       long lPos = SendMessage(SCI_SEARCHINTARGET, strlen(szFind), (long)szFind);
//    loop over selection until end of selection reached - moving the target start each time
      while (lPos < lEnd && lPos >= 0)
      {
         if (m_nSearchflags & SCFIND_REGEXP) // check for regular expression flag
            lLen = SendMessage(SCI_REPLACETARGETRE, strlen(szReplace), (long)szReplace);
         else
            lLen = SendMessage(SCI_REPLACETARGET, strlen(szReplace), (long)szReplace);
//       the end of the selection was changed - recalc the end
         lEnd = SendMessage(SCI_GETTEXTLENGTH, 0, 0);;
//       move start of target behind last change and end of target to new end of buffer
         SendMessage(SCI_SETTARGETSTART, lPos+lLen);
         SendMessage(SCI_SETTARGETEND, lEnd);
//       find again - if nothing found loop exits
          lPos = SendMessage(SCI_SEARCHINTARGET, strlen(szFind), (long)szFind);
         nCount++;
      }
   }
   return nCount;
}
Пока что не получается даже обычный поиск:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Var
   lLen,lStart,lEnd,lPos: Integer;
   szFind,szReplace: String;
 
begin
 
   szFind:='<!--*';
   szReplace:='<!--';
 
   lLen := 0;
   lStart := 0;
   lEnd := SendMessage(Npp.NppData.ScintillaMainHandle, SciSupport.SCI_GETTEXTLENGTH, 0, 0);
   // set target to selection
   SendMessage(Npp.NppData.ScintillaMainHandle, SciSupport.SCI_SETTARGETSTART, lStart, 0);
   SendMessage(Npp.NppData.ScintillaMainHandle, SciSupport.SCI_SETTARGETEND, lEnd, 0);
   // try to find text in target for the first time
   lPos := SendMessage(Npp.NppData.ScintillaMainHandle, SciSupport.SCI_SEARCHINTARGET, length(szFind), LPARAM(PChar(szFind)));
 
   ...
 
end;
lEnd находится, а вот lPos нет...
Можете помочь ?
Все используемые SCI_* функции описаны здесь: http://www.scintilla.org/ScintillaDoc

Вернуться к обсуждению:
Плагин под Notepad++
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.08.2016, 22:01

Как написать плагин для notepad++?
как написать плагин для notepad++? есть какой-нибудь мануал?

Не могу запустить под notepad
(defun task (lst1 lst2) (let ((l (length lst1))) (mapcar #'(lambda (x) (if (oddp (car x))...

Программирование под Win из Notepad++
Как сделать батник, чтобы из notepad++ можно было компилировать .asm файл(привязать батник к...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru