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 

Single Post  Topic: Autorun 
Author Message
Loopback



PostPosted: Mon Mar 03, 2025 00:36    Post subject: Reply with quote

Версия Autorun 2.2.17 beta

 Список изменений


В этой версии критическое изменение: исправление известной проблемы с лишним разворачиванием переменных в тексте параметров ряда функций в функциональной записи, что связано с разными принципами работы с параметрами в разных записях. Это касается всех функций, где было такое разворачивание.

 Список затронутых функций


К сожалению, в свое время критичность этого была недооценена. Найти приемлемое решение с полным сохранением совместимости не удалось, поэтому было принято решение радикально устранить проблему. Некоторые записи могут перестать работать, но исправить это в скриптах достаточно просто.

 Подробно про исправление



Все же очень неудобна эта фича форума со склеиванием последовательных сообщений. Было бы куда логичнее выложить версию в одном посте, а ответы дать в другом...

Orion9 wrote:
То есть обе записи следует избегать, и с кавычками тоже?

Это про вторую. С первой вопросов нет.

Orion9 wrote:
Я все такие записи исправил на:

Правильно.

Orion9 wrote:
Но иногда нужно, чтобы переменная раскрылась:

Похоже, я не совсем точно понял изначальный вопрос.

Quote:
Если есть переменная Local Dir = "%COMMANDER_PATH%\Ini\", то в командах: %"Dir%" равно "%COMMANDER_PATH%\Ini\", а %"%Dir%" равно "C:\Portable\TOTALCMD\Ini\"?

Разве? В первом случае лишний %, предполагаю опечатка. Вот код:

Code:
Local Dir = "%COMMANDER_PATH%\Ini\"

# тут содержимое не раскрывается OutputDebugString, поэтому выводит как есть
OutputDebugString %"Dir"
OutputDebugString %"%Dir%"

# тут содержимое второй раз раскрывается самим MsgBox
MsgBox %"Dir"
MsgBox %"%Dir%"


В любом случае выводит одинаковый результат.

Всё что внутри вычисляемой строки - считается выражением и подчиняется их правилам. А значит, в следующей версии такие записи %"%i%-2" тоже будут некорректны. Кстати забыл про этот вариант, надо его упомянуть в анонсе.

Такие записи идентичны, и правильной в будущем будет вторая:

Code:
SetEnv COMMANDER_VIDEO %"%SoftVideo%"
SetEnv COMMANDER_VIDEO %"SoftVideo"


Но вообще-то SetEnv и без вычисляемых строк поддерживает переменные:

Code:
SetEnv COMMANDER_VIDEO %SoftVideo%


И тут по тому же принципу:

Code:
ProcessExecGetOutput /OEM out %COMSPEC% "/c dir /s /b *.wav" %"dir"


В общем поэтому и надо привести всё к одному знаменателю, а то неслабая путаница возникает.


Orion9 wrote:
такая функция подойдет?

Мне кажется странной идея считать систему русской, если она не английская, а так с виду ок. Но не уверен.
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group