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: Wed Feb 19, 2025 13:07    Post subject: Reply with quote

Важное объявление

В ближайшей паре версий будут сделаны существенные изменения, которые, возможно, повлекут за собой неработоспособность некоторых записей в скриптах.

Первый этап

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

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

Code:
Например
FileGetAttr("%COMMANDER_PATH%\Totalcmd.exe")
нужно заменить на
FileGetAttr(COMMANDER_PATH & "\Totalcmd.exe")
или
FileGetAttr(Set("%COMMANDER_PATH%\Totalcmd.exe"))


Если текст с %переменной% содержится в другой переменной и раньше код основывался на разворачивании этого текста в параметре функции, то теперь в функциональной записи разворачивание производиться не будет. Чтобы достичь такого же результата, нужно будет добавить Set для явного разворачивания содержимого переменной:

Code:
path = "%COMMANDER_PATH%\Totalcmd.exe"
Было
FileGetAttr(path)
стало
FileGetAttr(Set(path))


Переключатель /EV-, встречающийся в ряде функций, теперь будет неприменим при записи в ФЗ.

Все записи функций в командном виде должны сохранить работоспособность без изменений.

Второй этап

Также, как следствие из первого этапа, было принято решение оптимизировать синтаксис и избавить его от некоторых послаблений и допущений, которые были сделаны в ранних версиях, что, в частности, позволит более чётко разграничить записи в КЗ и ФЗ.


  • Будет убрана возможность использовать переменные в виде %var% в выражениях, их использование будет ограничено только командной записью функций.
  • Будет убрана директива LegacyExpressions.


Это будет сделано не в ближайшей версии, а скорее всего через одну. Но вносить изменения можно уже сейчас, для этого просто нужно заменить в выражениях (в том числе в вычисляемых строках) использование вида переменных %var% на var. Это означает примерно такое:

Code:
var = %COMMANDER_PATH% & "\Totalcmd.exe"
должно стать
var = COMMANDER_PATH & "\Totalcmd.exe"

len = StrLen(%var%)
должно стать
len = StrLen(var)

ShowHint %"%var%"
должно стать
ShowHint %"var"


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

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

По поводу LegacyExpressions - думаю, вряд ли ещё остался кто-то, использующий старую интерпретацию.


Last edited by Loopback on Mon Mar 03, 2025 00:45; edited 1 time in total
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group