Fast Search Engine (wfx-плагин)

Обсуждение только плагинов и утилит для Total Commander.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

VadiMGP писал(а):Слушай, ну неужели я так невнятно выражаюсь, что меня можно понять с точностью до наоборот?
CapitainFlint писал(а):Не знаю, как такое противопоставление можно описать короткой фразой...
Пора переименовать тему с "Locate32: проблема с русским" в "проблема с русским". :lol:
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

VadiMGP писал(а):А теперь проиллюстрируй свою мысль на конкретном примере, пожалуйста. Какой именно плагин виртуальной панели написанный в соответствии с нынешним API станет работать некорректно? И в чем именно эта некорректность будет заключаться?
Уже упомянутый мной ранее TempPanel. Я - юзер. Я знаю, что плагин содержит некий неупорядоченный набор ссылок на файлы, разбросанные по разным дискам и разным подкаталогам. Я знаю, что я могу переименовывать, создавать, удалять ссылки без малейшего влияния на реальную файловую систему (в чём и состоит главное предназначение временной панели).
Тотал обновляется до версии 8.0, и в нём поведение плагинов временной панели меняется по твоему сценарию. Я не в курсе этих изменений, ибо многостраничную историю читать дико влом, но я помню, что обновление всегда выполнялось без каких бы то ни было проблем с совместимостью. Я устанавливаю эту версию 8.0, захожу в TempPanel, и вижу, что очепятался в имени одной из ссылок. Ладно, сейчас быстренько переименую... Переименовываю... Опс, а почему ссылка перестала работать? Иду смотреть оригинальный файл... Ух ты, а куда это делся оригинальный файл?.. Переименовался? А с какого бодуна он переименовался, если я переименовывал ссылку? Ну его в топку этот глючный Тотал 8.0!
VadiMGP писал(а):Ну что ж, я не буду в третий раз настаивать на удовлетворении моего праздного любопытства. Неважно, так неважно.
По сути ты предлагаешь выбирать из двух зол. Я не могу ответить на такой вопрос. Оба подхода плохи, примерно одинаково. Первый - необходимостью реализовывать всё силами плагина, второй - невозможностью выполнять одну из важнейших функций, без которой временная панель просто не имеет смысла (по крайней мере, с моей точки зрения).
VadiMGP писал(а):Более того, беру на себя смелость утверждать, что такого определения не существует.
API - Application Programming Interface. Интерфейс, предоставляемый одним компонентом другому. Если один из компонентов перестаёт удовлетворять заранее обговоренному соглашению, второй компонент либо придётся обязательно обновить, либо он перестанет работать так, как предполагалось изначально. Я считал, что это очевидно...

Разумеется, изменения допустимы, но изменения ни в коем случае не кардинальные. Иначе говоря, показывать диалог вместо in-place-remane-окошка можно, потому как на существенную часть функционала это не влияет. А полностью отказываться от вызова плагиновской функции, заменяя её своей собственной - нельзя, потому что плагин о таких каверзах не осведомлён.
VadiMGP писал(а):Извини, я не понял какой смысл ты вкладывал в это предложение. Выражение "такой, какой есть" синоним слова "неизмененный". То есть, я вижу фразу "Неизмененный API менять категорически недопустимо."
Есть внешний интерфейс API, а есть его внутренняя реализация (обработка) Тоталом. Менять второе без изменения (расширения) первого недопустимо.
Почему же, ё-моё, ты нигде не пишешь "ё"?
VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

Уже упомянутый мной ранее TempPanel.
Во-первых, ссылку можно? Единственный TempPanel, который я знаю, это http://wincmd.ru/plugring/temporarypanel.html Он виртуальной панелью (в терминах API) не является. Если ты имеешь в виду другой плагин - я хотел бы познакомиться с ним.
Во-вторых, ты не показал каким именно образом мое предложение приведет к твоему сценарию? Согласно моему предложению, ТС переименует файл, если плагин сам не занимается переименованием. Если плагин сам переименовывает - флаг ему в руки. Так что, я, по-прежнему, жду иллюстрацию несовместимости.
Если один из компонентов перестаёт удовлетворять заранее обговоренному соглашению, второй компонент либо придётся обязательно обновить, либо он перестанет работать так, как предполагалось изначально. Я считал, что это очевидно...
Это очевидно. Только не вижу связи с моими словами. Не надо мне излагать таблицу умножения, когда речь идет о логарифмических таблицах. :)
Оба подхода плохи, примерно одинаково.
Ну что ж, не скрою, я очень сильно удивлен, что ты оцениваешь эти два зла, как примерно равные.
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

VadiMGP писал(а):Во-первых, ссылку можно?
Где-то выкладывалась тестовая бета-версия, но в упор не помню, где... Но это мало что меняет. Я не могу быть уверен, что ни один плагин из всего существующего многообразия не использует интерфейс временной панели.
VadiMGP писал(а):Согласно моему предложению, ТС переименует файл, если плагин сам не занимается переименованием. Если плагин сам переименовывает - флаг ему в руки. Так что, я, по-прежнему, жду иллюстрацию несовместимости.
А вот тут совсем иной разговор. Я, видимо, как-то упустил этот момент, что поведение Тотала меняется только если плагин сам не реализует переименование. Над таким вариантом я не думал, поэтому пока сказать ничего не могу.
VadiMGP писал(а):Ну что ж, не скрою, я очень сильно удивлен, что ты оцениваешь эти два зла, как примерно равные
Не равные по "злобности", но равные по неприемлемости. Как, скажем, две бесконечности: счётное множество и континуальное. Второе безусловно мощнее первого, но с точки зрения обычных чисел и то, и другое - просто бесконечности, а уж насколько они мощные, не играет никакой роли (всё равно ни та, ни другая недостижимы). "В таком вот аксепте." © Стругацкие. :)
Почему же, ё-моё, ты нигде не пишешь "ё"?
VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

CapitainFlint писал(а):Я, видимо, как-то упустил этот момент, что поведение Тотала меняется только если плагин сам не реализует переименование.
Ну вот, "слона-то я и не заметил". Ладно, будем считать, что я снова невнятно выразился вот тут:
VadiMGP писал(а):...то такая проблема может возникнуть (по крайней мере, при сегодняшнем API), только если плагин явно сообщит ТС, что он (плагин) поддерживает переименование своих собственных элементов.
Я думал, что из этого понятно, что поведение ТС зависит от подержки переименования плагином. "Лифт должен выдерживать прямое попадание самого необученного академика". © Стругацкие. :)
Не равные по "злобности", но равные по неприемлемости.
Да, да, я так и понял. И именно этим и удивлен. Я думал, что разница в "злобности" все-таки больше, чем между счетным множеством и континуумом. Но, это уже неважно. Подумай над предыдущим абзацем, может быть ты изменишь свое мнение.
Ник
Сообщения: 1256
Зарегистрирован: Ср дек 15, 2004 09:33
Откуда: Москва

Сообщение Ник »

Насчёт плагина FSE:
Там есть галка "Регулярные выражения" - какой набор выражений поддерживается?
Мне нужно найти все файлы, у которых в именах есть что-либо, кроме основной латиницы, кириллицы, пробелов и подчерков - как и где праильно написать выражение?

Спасибо :)
Xubuntu
VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

2Ник
Насчет регэкспа, к сожалению, сильно помочь не могу. FSE только формирует запрос на поиск к Locate. В римдми самого Locate сказано только, что это перловские регулярные выражения(PCRE):
Regular expression support is provided by the PCRE (Perl Compatible Regular
Expressions) library package, which is an open source software, written by Philip Hazel,
and copyright by the University of Cambridge, England.
Загляни на http://www.pcre.ru
Ник писал(а):что-либо, кроме основной латиницы, кириллицы, пробелов и подчерков
Ну, первое, что приходит в голову

Код: Выделить всё

([^a-zA-Zа-яА-Я _]+)
но голову эту на отсечение не дам! :)
Ник
Сообщения: 1256
Зарегистрирован: Ср дек 15, 2004 09:33
Откуда: Москва

Сообщение Ник »

Кстати, в самой проге Locate32 я так и не нашёл (в отличие от плагина) - где ставить галку поиска с регулярными выражениями... :)
Xubuntu
VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

A там нет такой галки. :) Там используется немного чокнутый синтакс. Если ищешь регэксп в имени файла, то надо в начале строки поставить двоеточие. А если в тексте, то "regexp:". RTFM!
Аватара пользователя
Alextp
Сообщения: 4957
Зарегистрирован: Вс фев 06, 2005 17:21

Сообщение Alextp »

VadiMGP
ты не используешь в wfx_FSE какой-нибудь хак системы или Locate?
При использовании плагина, при инсталляции всей папки Тотала в TC Plugman,
все с большой вероятностью падает (вылетает, молча). Хотя и не на твоем плагине.
VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

Да, вроде ничего особенного я не использую. Разве что, при загрузке FSE проверяет наличие в вызывающем процессе окна класса "TTOTAL_CMD" (чтобы позже, при поиске, слать WM_USER+51). Если такого окна нет, то выскакивает сообщение "Cannot Find Total Commander window" и плагин не загружается, т.е. LoadLibrary должен вернуть тебе NULL(nil).
Но ты же пишешь, что все падает не на моем плагине, тогда это вообще несущественно.
А что, ты в дебаггере не видишь, что ли, на чем именно все падает?
Аватара пользователя
Alextp
Сообщения: 4957
Зарегистрирован: Вс фев 06, 2005 17:21

Сообщение Alextp »

не вижу.
Падает где-то, я не понимаю где. Дебаггер выдает:

Project raised too many consecutive exceptions: "access violation at XXXXXX: read of address XXXXXX".

После F9 - опять exception на том же самом месте. И т.д. непрерывный exception.
По коду не могу понять, что это за код: какая-то подпрограмма, что-то делает с регистрами.

Удаляю твой плаг: все 330 плагинов ставятся нормально
VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

Кстати, не знаю, в чем там у тебя проблема, но прямо сейчас скачал твой TC Plugman с wincmd.ru. Все прекрасно работает. Как положено, выскакивает сообщение "Cannot Find Total Commander window", но это, как и положено, ни на что не влияет. Никаких эксепшенов.
Удаляю твой плаг
Откуда? С моего винта? :)

Добавлено Интересную штуку я обнаружил. Оказалось, что все работает с дебаг-билдом. А релиз-билд действительно валится. Опять M$ бяку подложили.
Аватара пользователя
Alextp
Сообщения: 4957
Зарегистрирован: Вс фев 06, 2005 17:21

Сообщение Alextp »

>>>Откуда? С моего винта?

С моего.

Еще раз: есть набор 330 плагинов, в TC\Plugins, инсталлированы скопом (не все сразу).
Очищаю конфиг, Делаю "Install from folder" из этой папки, плагины должны переин-ся. В середине процесса
все вылетает, если до этого попался твой плаг. Если его удалить, то все ОК.

Если будут идеи, пиши
VadiMGP
Сообщения: 1625
Зарегистрирован: Ср мар 21, 2007 20:58

Сообщение VadiMGP »

Если будут идеи, пиши
Да какие там идеи. Я же говорю: отладочная версия работает, а релиз - нет. Разница между ними в том, они строятся разными компиляторами (отладочным и оптимайзером). Видимо этот оптимайзер где-то чересчур соптимизировал, такое иногда бывает. Так что тут думать особо нечего, тут просто мне надо сесть на полчаса-час, найти тот кусок кода, который он переоптимизировал и вправить ему мозги. Если хочешь, следующую версию плагина, перед тем как выпускать, вышлю тебе для проверки.

Добавлено. Нет, вру. Есть одна идея для тебя. Общего плана. Я не знаю как в дельфях, но в С++ есть конструкция try/catch. Позволяет перехватывать любую ошибку в определенном куске кода. Если аналогичная конструкция есть в Дельфи, то стOит все вызовы плагинов (включая LoadLibary!) поставить внутрь такой конструкции. Мало ли что какой плагин учудит, твоя программы все равно не вылетит.
Ответить