Regular Expression Search and Replace (RESearch)

Здесь можно обсудить ваш любимый плагин.
localhost
Posts: 11
Joined: Sun 21 Sep, 2014 15:58

Re: Regular Expression Search and Replace (RESearch)

Post by localhost »

Latest post of the previous page:

1.
localhost wrote:
Cavaler wrote: У меня возникла мысль. А текст вы ищете - русский или английский?
Просто если англйиский, то запросто возможна ситуация, когда плагин открывает файл, считая что он в кодировке OEM, и это совершенно не мешает найти в нем английский текст. А вывод русского текста конечно получается кривой.
Если так - поможет настройка Default codepage: ANSI
Ищу просто наборы цифр с пробелами!

По поводу настройки - проверю вечером. Сейчас нет этих файлов под рукой.
Поменял в настройках плагина Default codepage: ANSI
Теперь выводится в файл читабельно!
Спасибо!
User avatar
Cavaler
Posts: 1184
Joined: Mon 27 Jun, 2005 12:06
Been thanked: 10 times
Contact:

Re: Regular Expression Search and Replace (RESearch)

Post by Cavaler »

localhost wrote:Радость была преждевременной - падает, но теперь после сканирования нескольких сотен файлов и нахождения в них нескольких десятков.
Для вылавливания нужны свежие .pdb
pdb я всегда заливаю вместе со сборкой.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 114 times
Been thanked: 12 times

Re: Regular Expression Search and Replace (RESearch)

Post by sToLp »

На плагринге нет новых версий.
А хотелось бы иметь возможность автообновлять плагин через UpdateEx.
localhost
Posts: 11
Joined: Sun 21 Sep, 2014 15:58

Re: Regular Expression Search and Replace (RESearch)

Post by localhost »

localhost wrote:2.
Радость была преждевременной - падает, но теперь после сканирования нескольких сотен файлов и нахождения в них нескольких десятков.
Для вылавливания нужны свежие .pdb
После сканирования (Several line RegEx) примерно 500 файлов, выдает Exception
at 0x033ff015 (RESearchU3 x64.dll) in Far.exe: 0xC0000005: Access violation reading location 0x00000000124a1000.

Code: Select all

>	RESearchU3 x64.dll!CUnicodeSeveralLineProcessor::GetNextInLine()  Line 167 + 0x4d bytes	C++
 	RESearchU3 x64.dll!CUnicodeSeveralLineProcessor::GetNextLine()  Line 144 + 0x8 bytes	C++
 	RESearchU3 x64.dll!SearchRegExpProcess(IBackend * pBackend, ISplitLineProcessor & Proc)  Line 70 + 0xe0 bytes	C++
 	RESearchU3 x64.dll!CSearchSeveralLineRegExpFrontend::Process(IBackend * pBackend)  Line 90 + 0xd bytes	C++
 	RESearchU3 x64.dll!RunSearchUnicode(CFileBackend * pBackend, IFrontend * pFrontend)  Line 115 + 0xc bytes	C++
 	RESearchU3 x64.dll!RunSearch(const wchar_t * szFileName, IFrontend * pFrontend)  Line 157 + 0xb bytes	C++
 	RESearchU3 x64.dll!SearchFile(const FarLib::FIND_DATA * FindData, std::vector<FarLib::CPluginPanelItem,std::allocator<FarLib::CPluginPanelItem> > & PanelItems)  Line 35 + 0x1b bytes	C++
 	RESearchU3 x64.dll!DoScanDirectory(std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > * strDirectory, std::vector<FarLib::CPluginPanelItem,std::allocator<FarLib::CPluginPanelItem> > & PanelItems, void (const FarLib::FIND_DATA *, std::vector<FarLib::CPluginPanelItem,std::allocator<FarLib::CPluginPanelItem> > &)* ProcessFile)  Line 526 + 0x69 bytes	C++
 	RESearchU3 x64.dll!DoScanDirectory(std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > * strDirectory, std::vector<FarLib::CPluginPanelItem,std::allocator<FarLib::CPluginPanelItem> > & PanelItems, void (const FarLib::FIND_DATA *, std::vector<FarLib::CPluginPanelItem,std::allocator<FarLib::CPluginPanelItem> > &)* ProcessFile)  Line 541 + 0x32 bytes	C++
 	RESearchU3 x64.dll!DoScanDirectory(std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > * strDirectory, std::vector<FarLib::CPluginPanelItem,std::allocator<FarLib::CPluginPanelItem> > & PanelItems, void (const FarLib::FIND_DATA *, std::vector<FarLib::CPluginPanelItem,std::allocator<FarLib::CPluginPanelItem> > &)* ProcessFile)  Line 541 + 0x32 bytes	C++
 	RESearchU3 x64.dll!DoScanDirectory(std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > * strDirectory, std::vector<FarLib::CPluginPanelItem,std::allocator<FarLib::CPluginPanelItem> > & PanelItems, void (const FarLib::FIND_DATA *, std::vector<FarLib::CPluginPanelItem,std::allocator<FarLib::CPluginPanelItem> > &)* ProcessFile)  Line 541 + 0x32 bytes	C++
 	RESearchU3 x64.dll!DoScanDirectory(std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > * strDirectory, std::vector<FarLib::CPluginPanelItem,std::allocator<FarLib::CPluginPanelItem> > & PanelItems, void (const FarLib::FIND_DATA *, std::vector<FarLib::CPluginPanelItem,std::allocator<FarLib::CPluginPanelItem> > &)* ProcessFile)  Line 541 + 0x32 bytes	C++
 	RESearchU3 x64.dll!DoScanDirectory(std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> > * strDirectory, std::vector<FarLib::CPluginPanelItem,std::allocator<FarLib::CPluginPanelItem> > & PanelItems, void (const FarLib::FIND_DATA *, std::vector<FarLib::CPluginPanelItem,std::allocator<FarLib::CPluginPanelItem> > &)* ProcessFile)  Line 541 + 0x32 bytes	C++
 	RESearchU3 x64.dll!ScanDirectories(std::vector<FarLib::CPluginPanelItem,std::allocator<FarLib::CPluginPanelItem> > & PanelItems, void (const FarLib::FIND_DATA *, std::vector<FarLib::CPluginPanelItem,std::allocator<FarLib::CPluginPanelItem> > &)* ProcessFile)  Line 630 + 0x51 bytes	C++
 	RESearchU3 x64.dll!FileFind(std::vector<FarLib::CPluginPanelItem,std::allocator<FarLib::CPluginPanelItem> > & PanelItems, bool ShowDialog, bool bSilent)  Line 201 + 0x13 bytes	C++
 	RESearchU3 x64.dll!OpenPluginFromFileMenu(int Item, bool ShowDialog)  Line 310 + 0x13 bytes	C++
 	Far.exe!000000013fe8ec07() 	

Code: Select all

00000000033FEFDA  test        rcx,rcx  
00000000033FEFDD  je          CUnicodeSeveralLineProcessor::GetNextInLine+1D6h (33FEFF6h)  
00000000033FEFDF  cmp         rdx,rcx  
00000000033FEFE2  jb          CUnicodeSeveralLineProcessor::GetNextInLine+1D6h (33FEFF6h)  
00000000033FEFE4  sub         rcx,r12  
00000000033FEFE7  sar         rcx,1  
00000000033FEFEA  sub         esi,ecx  
00000000033FEFEC  lea         rax,[r12+rcx*2]  
00000000033FEFF0  mov         qword ptr [rdi+38h],rax  
00000000033FEFF4  jmp         CUnicodeSeveralLineProcessor::GetNextInLine+238h (33FF058h)  
00000000033FEFF6  sub         rdx,r12  
00000000033FEFF9  sar         rdx,1  
00000000033FEFFC  sub         esi,edx  
00000000033FEFFE  lea         rax,[r12+rdx*2]  
00000000033FF002  mov         qword ptr [rdi+38h],rax  
00000000033FF006  jmp         CUnicodeSeveralLineProcessor::GetNextInLine+238h (33FF058h)  
00000000033FF008  test        esi,esi  
00000000033FF00A  movsxd      rdx,esi  
00000000033FF00D  mov         rcx,r12  
00000000033FF010  mov         rax,rdx  
00000000033FF013  je          CUnicodeSeveralLineProcessor::GetNextInLine+205h (33FF025h)  

00000000033FF015  cmp         word ptr [rcx],0Ah  

00000000033FF019  je          CUnicodeSeveralLineProcessor::GetNextInLine+207h (33FF027h)  
00000000033FF01B  add         rcx,2  
00000000033FF01F  sub         rax,1  
00000000033FF023  jne         CUnicodeSeveralLineProcessor::GetNextInLine+1F5h (33FF015h)  
00000000033FF025  xor         ecx,ecx  
00000000033FF027  test        rcx,rcx  
00000000033FF02A  jne         CUnicodeSeveralLineProcessor::GetNextInLine+216h (33FF036h)  
00000000033FF02C  lea         rax,[r12+rdx*2]  
00000000033FF030  mov         qword ptr [rdi+38h],rax  
00000000033FF034  jmp         CUnicodeSeveralLineProcessor::GetNextInLine+240h (33FF060h)  
00000000033FF036  cmp         rcx,r12  
00000000033FF039  jbe         CUnicodeSeveralLineProcessor::GetNextInLine+228h (33FF048h)  

User avatar
Cavaler
Posts: 1184
Joined: Mon 27 Jun, 2005 12:06
Been thanked: 10 times
Contact:

Re: Regular Expression Search and Replace (RESearch)

Post by Cavaler »

localhost wrote:После сканирования (Several line RegEx) примерно 500 файлов, выдает Exception
at 0x033ff015 (RESearchU3 x64.dll) in Far.exe: 0xC0000005: Access violation reading location 0x00000000124a1000.
Судя по всему, падает на каком-то конкретном файле. Если бы бы его нашел - было бы очень круто.
localhost
Posts: 11
Joined: Sun 21 Sep, 2014 15:58

Re: Regular Expression Search and Replace (RESearch)

Post by localhost »

Cavaler wrote:
localhost wrote:После сканирования (Several line RegEx) примерно 500 файлов, выдает Exception
at 0x033ff015 (RESearchU3 x64.dll) in Far.exe: 0xC0000005: Access violation reading location 0x00000000124a1000.
Судя по всему, падает на каком-то конкретном файле. Если бы бы его нашел - было бы очень круто.
Файл найден.
Реально их несколько.
Отправлено ЛС.
ivank
Posts: 151
Joined: Fri 08 Aug, 2008 16:14
Has thanked: 3 times
Been thanked: 4 times
Contact:

Re: Regular Expression Search and Replace (RESearch)

Post by ivank »

встретил файл, в котором после определенной комбинации символов поиск из панели не находит заданную строку (независимо от того, используются regexp или нет).
например, ищу в файле test.txt слово "Location" с настройками:

стандартный фаровский поиск ищет без проблем.
Far 3.0.0.4127 x86, RESearch 8.5.4
к слову, нашел эту комбинацию байт: http://www.w3.org/2001/06/utf-8-wrong/utf8bad4.2.3.html
test.txt
(20 Bytes) Downloaded 88 times
User avatar
Cavaler
Posts: 1184
Joined: Mon 27 Jun, 2005 12:06
Been thanked: 10 times
Contact:

Re: Regular Expression Search and Replace (RESearch)

Post by Cavaler »

ivank wrote:к слову, нашел эту комбинацию байт: http://www.w3.org/2001/06/utf-8-wrong/utf8bad4.2.3.html
test.txt
Ну понятно. Но MS-овский декодер вместо того чтобы сожрать эти 4 байта как один невалидный символ, делает из них три.
Логика его мне не совсем ясна.
DV
Posts: 455
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 31 times
Been thanked: 15 times

Re: Regular Expression Search and Replace (RESearch)

Post by DV »

Воспроизводится и в RESearch 8.54:
DV wrote:Есть FAR 3.0 build 4034 x64, RESearchU3 x64.dll Version 8.53.
Запускаем

Получаем
Напомню, что дело в том, что в Региональных настройках язык неюникодных программ стоит Английский. Если поставить Русский, то всё в порядке. (Подобная проблема с нелатинскими символами характерна в случаях, когда какая-то часть плагина является неюникодной.)
Okioxpurga
Posts: 9
Joined: Wed 15 Oct, 2014 15:25

Re: Regular Expression Search and Replace (RESearch)

Post by Okioxpurga »

Проблема:
1. Удаление каталогов %FARLOCALPROFILE% и %FARPROFILE%
2. Распаковка "чистого" Far 3.0.4040 x86
3. Запуск Far 3.0 - никаких ошибок.
4. Скачивание и распаковка RESearch Version 8.54 (24.09.2014)
5. Запуск Far 3.0 - "красное" окно:
Error loading plugin C:\Far_30\Plugins\RESearch\RESearch.dll
Давлю Enter - "красное" окно:
Error loading plugin C:\Far_30\Plugins\RESearch\RESearchU3.dll
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: Regular Expression Search and Replace (RESearch)

Post by Shmuel »

Okioxpurga wrote:Проблема:
В папке плагина есть файл Install.txt.
Okioxpurga
Posts: 9
Joined: Wed 15 Oct, 2014 15:25

Re: Regular Expression Search and Replace (RESearch)

Post by Okioxpurga »

Shmuel wrote:
Okioxpurga wrote:Проблема:
В папке плагина есть файл Install.txt.
Не вижу такого, есть только:
15.10.2014 21:12 <DIR> Add-ons
13.05.2014 19:14 609 File_Id.Diz
09.12.2013 16:06 3633 Hints.rus.txt
09.12.2013 16:06 2050 Hints.txt
13.05.2014 18:32 36715 History.txt
04.04.2014 17:40 139405 pcrepattern.html
12.05.2014 20:07 2901 PluginCall.txt
13.05.2014 19:00 1472000 RESearch x64.dll
13.05.2014 19:00 975872 RESearch.dll
13.05.2014 17:46 22291 RESearch.msg
13.05.2014 19:14 39595 RESearchEng.hlf
13.05.2014 17:46 6037 RESearchEng.lng
13.05.2014 19:14 38817 RESearchRus.hlf
13.05.2014 17:46 6777 RESearchRus.lng
13.05.2014 18:59 1873408 RESearchU x64.dll
13.05.2014 18:59 1258496 RESearchU.dll
13.05.2014 18:57 1897472 RESearchU3 x64.dll
13.05.2014 18:58 1276928 RESearchU3.dll
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: Regular Expression Search and Replace (RESearch)

Post by Shmuel »

Okioxpurga wrote:[......]
4. Скачивание и распаковка RESearch Version 8.54 (24.09.2014)
Судя по датам файлов, у вас версия плагина от 13.05.2014, видимо с плагринга.
AleXH
Posts: 1000
Joined: Sun 12 Apr, 2009 05:21
Been thanked: 1 time

Re: Regular Expression Search and Replace (RESearch)

Post by AleXH »

Okioxpurga,
В папку плагина надо распаковать только одну версию dll, для FAR3 x86 это U3, для x64 - U3 x64.
ZergX
Posts: 9
Joined: Fri 12 Feb, 2010 10:14
Has thanked: 2 times

Re: Regular Expression Search and Replace (RESearch)

Post by ZergX »

Можно ли использовать в поиске в редакторе функции типа named()? Что-то у меня не получается. Использую версию 8.54.
Есть XML файл, в котором есть запись:

Code: Select all

...
<Move component="database" source="server1" target="serverA"/>
...
а также,

Code: Select all

...
<Server name="server1" display="my source server">...</Server>
<Server name="serverA" display="my target server">...</Server>
...
Необходимо найти source по значению component="database" и перейти на соответствующий Server. Реализую так:
Batch:
1. Replace. Search for:

Code: Select all

<Move component="database" source="([^"]+)"
Replace with:

Code: Select all

store('Q',match(1));skip()
2. Search. Search for:

Code: Select all

'Server name="'+named('Q')+'"'
Что не так?

И ещё. Как/где просмотреть named variables?
Спасибо!
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Regular Expression Search and Replace (RESearch)

Post by John Doe »

ZergX wrote:Можно ли использовать в поиске в редакторе функции типа named()? Что-то у меня не получается. Использую версию 8.54.
[x] Вычислить как скрипт:
Post Reply

Return to “Обсуждение плагинов”