Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

[BUG] Ошибки при поиске символов с RegExp

 
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы printer-friendly view
View previous topic :: View next topic  
Author Message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Mon Mar 05, 2007 19:17    Post subject: [BUG] Ошибки при поиске символов с RegExp Reply with quote

Чтобы воспроизвести косяк, откройте в листере любой бинарный файл (например любой MP3 файл). В диалоге поиска введите в строку поиска \x00 (поиск нулевого символа) и поставьте галочку Регулярные выражения. На удивление Тотал ничего не находит (даже в файле, состоящем только из одних нулевых символов). Причем сообщения, что, мол, ниче не найдено, Тотал при этом не показывает(!).

Если при тех же условиях попытаться искать символ \x01, то теперь Тотал наконец-то начнет находить то что мы ему заказали, но при этом еще находит и ... нулевой символ Smile.

Сюрпризы ожидают нас и при поиске символов \x0A или \x0D. В малом файле, скорее всего, ничего не будет найдено. По логике оно так и должно быть, если верить в то, что в Тотале поиск с RegExp производится только в пределах одной строки. Но вот что странно, при поиске в больших файлах символы начинают-таки находиться, но это абсолютно произвольные символы Sad

Сказать, что поиск \xnn не работает, я конечно не могу. По крайней мере с другими, проверенными мною ASCII-кодами проблем пока не заметил. Может и все мною описанное выше тоже является нормальным поведением, но оно, как минимум, нуждается в некоторых разъяснениях.
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6193
Location: Москва

Post (Separately) Posted: Mon Mar 05, 2007 19:56    Post subject: Reply with quote

Некорректный поиск нулевого символа - известный баг. К сожалению, проблема пока из разряда нерешаемых, т.к. Тотал использует для хранения данных Сишные строки, в которых нулевой символ - признак конца строки, и потому вынужден заменять внутренние нулевые символы чем-нибудь другим (вполне возможно, именно символом \x01, точно не помню).
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Mon Mar 05, 2007 20:24    Post subject: Reply with quote

Что-то пока не убеждает это меня. Как же тогда ведется (успешно!) поиск 00 с опцией Hex-код?

А что по поводу символов \x0A , \x0D?

Я так считаю, что нужно тогда полностью исключать поиск нулевого сивола (и, наверное, символов 0x0D и 0x0A) через RegExp из заявленных возможностей программы и обязательно документировать это. Иначе получается весьма неоднозначный поиск. Тем более неприятно, что все эти дела распространяются и на поиск файлов с учетом их содержимого.
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6193
Location: Москва

Post (Separately) Posted: Mon Mar 05, 2007 20:41    Post subject: Reply with quote

Volniy wrote:
Что-то пока не убеждает это меня.

За что купил, за то и продаю. Very Happy

Volniy wrote:
Как же тогда ведется (успешно!) поиск 00 с опцией Hex-код?

Понятия не имею. Видимо, в этом месте Гислеру удалось чего-то подхачить.

Volniy wrote:
А что по поводу символов \x0A , \x0D?

Читаем справку:
Quote:
... программа поддерживает только поиск в пределах одной строки.


Volniy wrote:
Я так считаю, что нужно тогда полностью исключать поиск нулевого сивола

Может быть. Забрось Гислеру. Если по-хорошему, так надо вообще прикрутить нормальную библиотеку помощнее... Что, впрочем, уже предлагали.
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
Lev



Joined: 02 Mar 2005
Posts: 392

Post (Separately) Posted: Mon Mar 05, 2007 20:54    Post subject: Reply with quote

Небольшое отклонение от темы.
У меня при попытке поиска текста "\n" при отключенных регекспах ищется конец строки. Это фича или баг?
Back to top
View user's profile Send private message
Alextp



Joined: 06 Feb 2005
Posts: 4957

Post (Separately) Posted: Mon Mar 05, 2007 21:35    Post subject: Reply with quote

Это фича. Еще ищется \t \0 и что-то еще (оно в справке есть).
_________________
UniViewer - CudaText - LogViewer
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Mon Mar 05, 2007 21:47    Post subject: Reply with quote

CaptainFlint wrote:
Читаем справку:
Quote:
... программа поддерживает только поиск в пределах одной строки.


Не верь глазам своим, однако. Я же говорю, что все-таки находит что-то Тотал при поиске \x0A , \x0D (чушь всякую), а ведь не должОн.

Alextp wrote:
Это фича. Еще ищется \t \0 и что-то еще (оно в справке есть).

Да нет там ничего, кроме \n, \t и \\. \0 - не работает, проверено.
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6193
Location: Москва

Post (Separately) Posted: Mon Mar 05, 2007 22:02    Post subject: Reply with quote

Volniy wrote:
Я же говорю, что все-таки находит что-то Тотал при поиске \x0A , \x0D (чушь всякую), а ведь не должОн.

Значит, недоделка какая-нибудь.
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
Alextp



Joined: 06 Feb 2005
Posts: 4957

Post (Separately) Posted: Wed Mar 07, 2007 22:41    Post subject: Reply with quote

Надеюсь, в UV будет получше:
http://forum.wincmd.ru/viewtopic.php?p=25868#25868
_________________
UniViewer - CudaText - LogViewer
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group