Autorun

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

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

Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

KopBuH
Действительно есть проблема, буду смотреть. Уж падать-то точно не должен.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Восьмая бета, только исправления ошибок.

Скачать

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

- исправлены неправильные номера строк в сообщениях об ошибках
- исправлено падение при использовании == в сравнении
Аватара пользователя
KopBuH
Сообщения: 127
Зарегистрирован: Пт июл 02, 2010 09:21
Откуда: Tashkent, Uzbekistan

Сообщение KopBuH »

заметил еще один интересный глюк:
код из конфига:

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

IniRead RemoteAdminName "%COMMANDER_INI%" "RemoteAdministration" "RemoteAdminName" "Администратор"
IniRead RemoteAdminPWD "%COMMANDER_INI%" "RemoteAdministration" "RemoteAdminPwd" "0"

SetEnv /EV COMMANDER_ADMINNAME "%RemoteAdminName%"
SetEnv /EV COMMANDER_ADMINPWD "%RemoteAdminPwd%"
код из wincmd.ini:

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

[RemoteAdministration]
RemoteAdminName=
RemoteAdminPwd=
как видите, ключи в ini-файле стоят пустые, а в переменной RemoteAdminName по умолчанию стоит "Администратор"
теперь, при загрузке ТС, получаем это:
Скриншот

если удалить ключи из ini-файла, то всё работает:
Скриншот

что я делаю неправильно?, быть может если ключи пустые, то лучше чтобы плагин писал в переменной ключи по умолчанию?
и еще было бы неплохо установки ключей по умолчанию из переменной, например:

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

IniRead RemoteAdminName "%COMMANDER_INI%" "RemoteAdministration" "RemoteAdminName" "%USERNAME%"
[mod="Avada"]Неформатные картинки заменены ссылками, текст преобразован в код. Читаем правила форума и впредь проверяем через предварительный просмотр результаты внедрения картинок. Также прошу обратить внимание, как на форуме принято оформлять фрагменты кода. И заодно отмечу, что читать посты при использовании в начале фраз заглавных букв значительно приятнее.[/mod]
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

KopBuH
RemoteAdminName - это не внутренняя переменная, её заключать в % не надо. И, кстати, кавычки в командах вообще не нужны.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

KopBuH
Если ключ есть - он есть, неважно, какое у него значение. В данном случае есть ключ с пустым значением, следовательно, считываться должно оно.

Другое дело, что функция SetEnv не позволяет создавать переменные окружения с пустым значением, поскольку Windows не допускает создания пустых переменных окружения.

Однако сейчас и переменные не могут быть пустыми, поэтому и не создаются. Честно говоря, не помню, почему было сделано именно так, особого смысла в этом нет. Переделаю, тогда содержимое переменной можно будет проверить в условии на пустое значение:

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

If %RemoteAdminName% = "" Then
  SetEnv /EV COMMANDER_ADMINNAME "Администратор"
Else
  SetEnv /EV COMMANDER_ADMINNAME "%RemoteAdminName%"
EndIf
Последний раз редактировалось Loopback Чт ноя 15, 2012 14:17, всего редактировалось 1 раз.
Аватара пользователя
KopBuH
Сообщения: 127
Зарегистрирован: Пт июл 02, 2010 09:21
Откуда: Tashkent, Uzbekistan

Сообщение KopBuH »

Flasher писал(а):KopBuH
RemoteAdminName - это не внутренняя переменная, её заключать в % не надо. И, кстати, кавычки в командах вообще не нужны.
заключать её надо, в соотствии с созданием выше внутренней переменной:

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

IniRead RemoteAdminName "%COMMANDER_INI%" "RemoteAdministration" "RemoteAdminName" "Администратор" 
полный код из поста выше:

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

IniRead RemoteAdminName "%COMMANDER_INI%" "RemoteAdministration" "RemoteAdminName" "Администратор"
IniRead RemoteAdminPWD "%COMMANDER_INI%" "RemoteAdministration" "RemoteAdminPwd" "0"

SetEnv /EV COMMANDER_ADMINNAME "%RemoteAdminName%"
SetEnv /EV COMMANDER_ADMINPWD "%RemoteAdminPwd%"
Flasher
или все таки я не прав?

Добавлено спустя 7 минут:
Loopback писал(а):KopBuH
Если ключ есть - он есть, неважно, какое у него значение. В данном случае есть ключ с пустым значением, следовательно, считываться должно оно.
да, оно считывается. посколько при удалении ключа из ini-файла происходит подставка значений по умолчанию.
Loopback писал(а): Другое дело, что функция SetEnv не позволяет создавать переменные с пустым значением, поскольку Windows не допускает создания пустых переменных окружения.
а можно сделать, что если значение пустое, то переменная создавалась со значением по умолчанию, а не с именем самой переменной?.

P.S.:
а можно в таком сравнении, которое вы указали выше, вместо конкретного "Администратор" использовать глобальную переменную, например %USERNAME%?
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

KopBuH писал(а):а можно сделать, что если значение пустое, то переменная создавалась со значением по умолчанию, а не с именем самой переменной?.
Можно все, но идеологически это неправильно. Set и SetEnv - это по-сути присваивание, а присваиваем мы что-то заранее известное. Для проверки есть условия.
KopBuH писал(а):а можно в таком сравнении, которое вы указали выше, вместо конкретного "Администратор" использовать глобальную переменную, например %USERNAME%?
Разумеется, любые существующие переменные, внутренние или окружения.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

KopBuH писал(а):или все таки я не прав?
Нет. Переменная изначально объявлялась без %, в том же виде она должна быть использована в других командах.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

KopBuH
Flasher
Насчет переменных правила просты: если переменная устанавливается (Set, SetEnv, IniRead), то ее имя пишется без %, во всех остальных местах, т.е. там где она читается - % обязательны.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Loopback
Так в SetEnv читаем или устанавливаем?
Аватара пользователя
KopBuH
Сообщения: 127
Зарегистрирован: Пт июл 02, 2010 09:21
Откуда: Tashkent, Uzbekistan

Сообщение KopBuH »

Flasher писал(а):Loopback
Так в SetEnv читаем или устанавливаем?
насколько знаю, читаем внутреннею переменную, а устанавливаем переменную окружения (внешнюю).

Добавлено спустя 4 минуты:
Loopback писал(а):KopBuH
Flasher
Насчет переменных правила просты: если переменная устанавливается (Set, SetEnv, IniRead), то ее имя пишется без %, во всех остальных местах, т.е. там где она читается - % обязательны.
всё так. если оставить без %, то получишь просто текст, а не содержание переменной. просто уже не стал спорить с Flasher.
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

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

Loopback
Как и значки, мои шрифты подвергаются частому редактированию. Со значками проще - изменил, а после обновил панель инструментов и вуаля. Шрифты же, загруженные плагином, доступны только для чтения. Чтобы их изменить, я делаю их копии, редактирую, далее из Проводника с закрытым TC произвожу замену. Есть ли способ выгрузить эти шрифты? Перезапуск TC их вернет. Шрифты задействованы в TC, но перед выгрузкой я могу сменить их на что-либо из стандартного набора.
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

KopBuH писал(а):насколько знаю, читаем внутреннею переменную, а устанавливаем переменную окружения (внешнюю).
если оставить без %, то получишь просто текст, а не содержание переменной. просто уже не стал спорить с Flasher
Внутренняя переменная является предопределённой либо устанавливается командой Set, чего мы не наблюдаем в примерах выше. Даже если взять такой пример

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

Set Ren "Переменная окружения"
SetEnv Perem %Ren%
, записывается тот же текст %Ren%. И чего тут спорить?
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Flasher писал(а):Так в SetEnv читаем или устанавливаем?
Не совсем правильно выразился: там где мы вводим имя переменной для записи - там без %, там где ее читаем - там с %.
Flasher писал(а):записывается тот же текст %Ren%. И чего тут спорить?
Ты забыл ключ /EV. C ним будет значение.
ask-rus писал(а):Есть ли способ выгрузить эти шрифты?
Есть - я же их выгружаю при завершении работы плагина. Но как ты это предлагаешь сделать во время работы?
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

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

Loopback
Странно, что программа для редактирования шрифтов не может сохранить измененный шрифт (привелегии админа экзешнику присваивал), загруженный плагином, а переименовать файл в TC можно легко. Я точно помню, что раньше TC выдавал ошибку, ссылаясь на доступность файла только для чтения. Возможно, тогда я запускал TC без прав администратора. Можешь у себя это проверить? Программа Type light, бесплатная.
Loopback писал(а):Есть - я же их выгружаю при завершении работы плагина.
Значит, cm_UnloadPlugins должна помочь.
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Ответить