Total Commander Edit Redirector

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

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

Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Koljasik писал(а):
В подробном режиме представления в зависимости от текущей локали открытие выделенных файлов может не работать. Если это произошло, пожалуйста, сообщите мне, с какой локалью это происходит.
Мой случай. Что вы подразумеваете под локалью в windows 7?
Собственно, здесь очень хорошо написано, что такое локаль.
GGS
Сообщения: 322
Зарегистрирован: Сб май 02, 2009 13:00

Сообщение GGS »

CaptainFlint
При запуске tcer.exe получаю:
tcer.exe - обнаружена ошибка. Приложение будет закрыто.
Приносим извинения за неудобства.
WinXP SP3+ (rus); TC 7.55a. Какие логи/дампы нужны и куда выложить?
P.S. tcer.ini - копия tcer.sample.ini (аналогично с пустым tcer.ini = 0 байт). Если удалить tcer.ini, то при запуске tcer.exe просто ничего не происходит.
P.P.S. Отчёт об ошибке, перехваченный из %TEMP%, http://zalil.ru/29840728
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

Koljasik писал(а):Что вы подразумеваете под локалью в windows 7?
Что выставлено в языковых и региональных настройках Панели управления?
Скачай, пожалуйста, эту прожку:
http://flint-inc.ru/Temp/tcer_dirlist.rar
распакуй в какой-нибудь каталог, где уже есть несколько файлов, выставь Подробный режим, выдели несколько файлов (можно все) и запусти tcer_dirlist.exe. Она стащит список выделенных файлов из активной панели в том виде, в каком их отдаёт Тотал, и забросит во временный файл (%TEMP%\tcer_dirlist.log). Выложи его куда-нибудь (только не надо копипастить прямо в текст сообщения: это порушит все пробелы и табуляции, а мне именно они и важны, как раз по ним выполняется анализ и выделение имени файла).
GGS писал(а):При запуске tcer.exe получаю:
tcer.exe - обнаружена ошибка. Приложение будет закрыто.
Попробуй сделать логи этой версией: http://flint-inc.ru/Temp/tcer_logging.rar
Скачай её и замени ей исполняемый файл. После этого сделай то же самое, что привело к крэшу, из временного каталога (%TEMP%) вытащи файл с именем tcer_trace.log и брось куда-нибудь, чтоб я мог глянуть.
Почему же, ё-моё, ты нигде не пишешь "ё"?
GGS
Сообщения: 322
Зарегистрирован: Сб май 02, 2009 13:00

Сообщение GGS »

CaptainFlint писал(а):Попробуй сделать логи этой версией
Сделал это на другом компе, но суть осталась (OS и TC те же). http://slil.ru/29841398
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

GGS
Какие процессоры на обоих компах? Желательно с точностью до моделей или хотя бы поколений.

Попробуй эту версию:
http://flint-inc.ru/files/mlang/tcer_x3 ... .0.0.0.rar
Почему же, ё-моё, ты нигде не пишешь "ё"?
GGS
Сообщения: 322
Зарегистрирован: Сб май 02, 2009 13:00

Сообщение GGS »

CaptainFlint писал(а):Какие процессоры на обоих компах?
Сейчас http://ipicture.ru/uploads/101020/Bo6X2Wvg38.png
Предыдущий примерно такой же :oops:
CaptainFlint писал(а):tcer_x32_nosse_1.0.0.0.rar
Этот работает!
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

GGS
Понятно. Я компилировал с использованием SSE/SSE2, не рассчитывал, что старых процессоров используется достаточно для того, чтобы их пользователи пересеклись с TCER.
Почему же, ё-моё, ты нигде не пишешь "ё"?
Reflector
Сообщения: 56
Зарегистрирован: Вс ноя 29, 2009 17:51

Сообщение Reflector »

CaptainFlint писал(а): Во-первых, я ненавижу STL. Хоть и мощный, но крайне неудобный в использовании (не говоря уж о километровых сообщениях об ошибках, чуть что не так). Во-вторых, я совсем не уверен, что vector сможет жить в программе сам по себе, ничего больше не затащив вместе с собой из STL. В этом случае вряд ли получится экономия. В-третьих, я разрабатывал с учётом возможного отказа от CRT, что в случае использования STL вызвало бы дополнительные проблемы.
Добавил в твой проект vector, размер бинарника вырос на 8к при том, что Array я не удалял, т.е. реально будет еще меньше. Это много? Не думаю... В чем неудобство тоже не понятно. Допустим ты пишешь:

Array<int> abc;
abc.Append(10);
if (abc.GetLength() == 0) ...

чем это код сложнее такого?

vector<int> abc;
abc.push_back(10);
if (abc.empty()) ...

Очевидно он ничем не сложнее, более функционален и при необходимости я легко могу заменить vector на list или map, собственная реализация которых была бы уже не такой простой, как твой Array. Почему для тебя это не очевидно? Видимо ты сначала изучал чистый С потому плохо знаешь С++ и его библиотеки. В частности это видно по использования таких чисто сишных особенностей, как передача void в качестве аргументов функций и использование typedef при определении структур и перечислений. Ты пишешь на С++ так, будто это С, игнорируя все рекомендации ведущих С++ программистов. К чему это приводит? К функциям на 800 строк внутри которых огромное количество мест с потенциальными утечками памяти. Например, когда прога выдает "Configuration file not found!", то утекает 2048 + 2048 + 12 + 20 + 2048 + 2048 байт памяти. Если я возьму любую ошибку выдаваемую выше нее в текущем блоке кода, а это:

Memory allocation error!
Failed to find myself
Too long INI file name!
Too long path to INI!
COMMANDER_INI variable undefined!
Too long path to myself!

то везде будут утечки памяти. Естественно ниже они буду тоже, но многих их них можно было бы избежать используя string и исключения, еще и код бы стал короче, надежнее, понятнее, ты бы не думал будут строки больше 1024 символов или нет и... Да, и бинарник бы опять стал больше, это ужасно :)
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

Reflector писал(а):Добавил в твой проект vector, размер бинарника вырос на 8к при том, что Array я не удалял, т.е. реально будет еще меньше. Это много? Не думаю...
Не много. Но зачем, если можно без? Преимуществ перед моим решением я пока не вижу.
Reflector писал(а):В чем неудобство тоже не понятно.
Я говорил не конкретно про vector, а про STL в целом. Мне его сверх-навороченные шаблоны не нравятся. То, что vector в данном случае достаточно прост и может обходиться без сверх-наворотов — всего лишь счастливая случайность.
Reflector писал(а):Очевидно он ничем не сложнее, более функционален и при необходимости я легко могу заменить vector на list или map, собственная реализация которых была бы уже не такой простой, как твой Array.
А оно надо? Я ещё раз повторяю: моя цель — максимальная компактность и производительность. Чтобы программа запускалась и выполнялась реактивно, чтобы пользователь не успел сменить каталог или нажать лишний пробел, изменив список выделенных файлов до того момента, как программа их успеет из Тотала выдрать. Вот зачем мне прямо сейчас сдался map или list? Дадут они мне большую производительность, чем даёт сейчас мой Array? Что я получу за эти восемь килобайт, кроме осознания того, что я, такой крутой программист, умею использовать стандартные библиотеки вместо изобретания велосипедов?
Reflector писал(а):Почему для тебя это не очевидно? Видимо ты сначала изучал чистый С потому плохо знаешь С++ и его библиотеки.
Знать библиотеки и использовать их — несколько разные вещи, не находишь? Я не вижу смысла пихать в каждый из своих проектов все мыслимые плюсовые навороты только из-за того, что они существуют в природе. Я использую то, что считаю нужным и тогда, когда считаю нужным.
Reflector писал(а):В частности это видно по использования таких чисто сишных особенностей, как передача void в качестве аргументов функций и использование typedef при определении структур и перечислений.
void генерирует Студия при создании класса. Я решил лишь следовать этому шаблону, только и всего. typedef остались от копипаста из системных H-файлов, которые рассчитаны на C. Да, каюсь, забыл привести в более "плюсовый" вид… Сам не люблю typedef'ы для структур.
Reflector писал(а):Например, когда прога выдает "Configuration file not found!", то утекает 2048 + 2048 + 12 + 20 + 2048 + 2048 байт памяти.
Это осознанный шаг, документированный в коде. Описанная тобой утечка — не утечка, потому что программа завершает выполнение, и память автоматически освобождается системой. Если кто-то захочет использовать код в другом проекте, где при возникновении ошибок процесс не завершается, эту ситуацию надо будет разруливать. Я об этом знаю, я об этом предупреждаю в коде. Предпринимать со своей стороны дополнительные шаги, потенциально влияющие на скорость выполнения кода, считаю в данном конкретном случае излишним.
Почему же, ё-моё, ты нигде не пишешь "ё"?
Koljasik
Сообщения: 59
Зарегистрирован: Вт ноя 13, 2007 00:40
Откуда: СПб

Сообщение Koljasik »

CaptainFlint писал(а):Что выставлено в языковых и региональных настройках Панели управления?
Россия, Русский, естественно.

tcer_dirlist.log
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

Koljasik
А, шоб ему… :( Совершенно забыл, что размер может быть с единицами указан, а не в байтах. Подумаю, как это можно исправить.

Спасибо за лог.
Почему же, ё-моё, ты нигде не пишешь "ё"?
Den_Klimov
Сообщения: 207
Зарегистрирован: Пт ноя 03, 2006 11:27
Откуда: Ukraine.Kiev

Сообщение Den_Klimov »

Вижу несмотря на то что я пропал [работа волк, догоняет и кусает, не убежишь :( ] тут процесс вовсю кипит. :)
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

Сообщение ask-rus »

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

Сообщение CaptainFlint »

ask-rus писал(а):А в чем фишка?
В особенностях работы Тотала. В режиме эскизов нет возможности получить из внешней программы список выделенных файлов в панели Тотала (во всяком случае, я его не нашёл). Единственный способ — запускать программу не как редактор, а как стороннее приложение с параметром %L, но этот способ несовместим с остальными сценариями работы редактора, в частности — с открытием файлов на редактирование из архивов, с FTP, из FS-плагинов.

Теоретически, можно было бы сделать следующее: если включён режим эскизов, автоматически послать в Тотал команду, запускающую внешнюю прогу с %L, а та прога уже распарсит список и запустит редакторы. Но тут возникает сразу несколько сложностей. Во-первых, я пока не нашёл способа отличить режим эскизов от прочих. Во-вторых, режим эскизов может быть включён и в архиве, а там %L не работает. В-третьих, двойной запуск программы — двойная задержка, пользователь может успеть сменить каталог или поменять выделение, не подозревая, что программа ещё только-только в процессе запуска. В-четвёртых, для подобного действия необходимо предварительно создать в Тотале EM-команду, которая запускала бы этот редактор, т.к. передать произвольной программе %L не получится (это, конечно, не страшно, но установка редиректилки становится нетривиальной, а ридми ж почти никто не читает).
Почему же, ё-моё, ты нигде не пишешь "ё"?
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

ask-rus
К сказанному CaptainFlint хочу добавить, что в силу вышесказанного с режимом эскизов не справляются и другие аналогичные программы. F4Menu, скажем, честно сообщает, что режим эскизов не поддерживается, а ChoiceEditor молча игнорирует выделение и открывает в редакторе только файл под курсором.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Ответить