Сортировка команд в скрипте AVZ по рекомендуемому шаблону

Сортировка команд в скрипте AVZ по рекомендуемому шаблону 2018-10-04

Сортировщик обрабатывает команды только между begin и end. Хотелось бы чтобы (в шаблон ?) можно было бы добавить ещё строчку var которая располагалась бы до begin.
 
Сортировщик обрабатывает команды только между begin и end. Хотелось бы чтобы (в шаблон ?) можно было бы добавить ещё строчку var которая располагалась бы до begin.

Утилита создавалась для простых скриптов типа:
Код:
begin
... команды...
end.
В скриптах с секцией var, где объявляются переменные, как мне кажется, могут быть операции присвоения, сравнения и т.п., что уже выходит за рамки данной утилиты, так как уже невозможно будет, имея шаблон команд обработать по нему наш скрипт.
 
beve, разумеется для сложных скриптов эта утилита не годится, но бывают очень простые скрипты с var. Например просто путь к папке автозагрузка считали из реестра и вынесли в переменную (такое часто применяется) и др. простые вариации.
 
Например просто путь к папке автозагрузка считали из реестра и вынесли в переменну
Даже в таком простом действии не возможно будет опереться на шаблон. Ибо имя переменной может быть произвольной, значит в шаблон ее не возможно будет записать, а без этого и обработка будет не возможна, вот я о чем.
 
но бывают очень простые скрипты с var. Например просто путь к папке автозагрузка считали из реестра и вынесли в переменную (такое часто применяется) и др. простые вариации.
Вот, изменённая версия. Утилита будет обрабатывать секцию var с объявлением переменных, записанную в одну строчку таким способом:
Код:
var StartupFolder :string;
а вот так, уже не будет:
Код:
var
  StartupFolder :string;
При этом в секцию [Functions] нужно тоже будет добавить эту объявленную ранее переменную StartupFolder на свое место так:
Код:
[Functions]
StartupFolder
На практике, данные простые действия с необходимостью использования переменных приходится делать не так часто, но кому-нибудь это, возможно, будет полезным.
В основную версию, которая в 1 сообщении темы данные изменение пока не войдут, в справке к программе данные изменения не описаны.
 

Вложения

  • ScriptPoShablonu_1.3.7z
    532.9 KB · Просмотры: 7
Последнее редактирование:
При этом в секцию [Functions] нужно тоже будет добавить эту объявленную ранее переменную StartupFolder на свое место.
разве не перед ней ? У меня добавлено так
Код:
var StartupFolder :string;
[Functions]

Добавлено через 2 минуты 3 секунды
проверил оба варианта работают :).
 
разве не перед ней ? У меня добавлено так
Код:
var StartupFolder :string;
[Functions]
Добавлено через 2 минуты 3 секунды
проверил оба варианта работают
Правильно будет только в в секцию [Functions] добавить StartupFolder. А запись var StartupFolder :string; должна присутствовать в скрипте avz.
 
Последнее редактирование:
Вышла новая версия редактора и с ней утилита, как-то странно работает. После обработки скрипта в буфере обмена редактор скриптов "зависает" + при этом замечаю, что у меня открыто два окна редактора скриптов (для теста я копировал существующий скрипт из редактора), хотя до этого был открыто только одно окно. В итоге приходиться убивать процесс из диспетчера задач.
 
Код:
begin
DeleteFile('C:\test\test.exe','32');
DeleteFile('C:\test\test.exe', '32');
end.
Утилита считает эти две команды разными. Нельзя ли поправить, чтобы игнорировала пробелы между параметрами.
 
Утилита считает эти две команды разными.
Пробел же можно взять и поставить в любом месте команды, не только между параметрами, но еще и "перед запятой", и еще в паре других мест, в которых пробел не изменит суть команды на выполнение, но при сравнении утилитой команды окажуться разными из за пробелов. Разве не так? Мне кажеться бывают и такие случаи. Наверное все таки лучше при написании команд скрипта взять за правило придерживаться "стандарта" предложенного самим разработчиком AVZ.

P.S. Высказал свое мнение. Но, мне кажеться, сдесь ты не просто указал именно эти команды, значит возможно я что то пропустил и эти команды являются, так сказать, творением самого разработчика AVZ? Тогда найдем решение. Можно или разработчику написать, но скорее всего он нас не поймет... или я исправлю.
 
Ну, скажем так, можно написать с пробелами, можно без, можно их поставить хз где угодно в дозволеном месте, для компилятора\парсера команд это не будет играть никакой роли. А вот читающему придётся напрягаться. Для примера, прочти это же сообщение с пробелами и без.

Ну,скажем так,можно написать с пробелами,можно без,можно их поставить хз где угодно в дозволеном месте,для компилятора\парсера команд это не будет играть никакой роли.А вот читающему придётся напрягаться.Для примера, прочти это же сообщение с пробелами и без.
А некоторые вообще ставят ещё пробел перед знаком препинания
Ну , скажем так , можно написать с пробелами , можно без , можно их поставить хз где угодно в дозволеном месте , для компилятора \ парсера команд это не будет играть никакой роли . А вот читающему придётся напрягаться . Для примера, прочти это же сообщение с пробелами и без.
В обоих случаях конечно же ты текст и смысл поймёшь, но написан он будет в стиле "вырви глаз". Вот к примеру ты ставишь разделители между принимаемыми аргументами в функции? Думаю да. Мне например тоже легче ориентироваться если написано так
Код:
bool Function(i, a, b, c)
а не
Код:
bool Function(i,a,b,c)
Просто пробел визуально улучшает чтение кода.
 
Просто пробел визуально улучшает чтение кода.
С этим никто и не поспорит. Увидев предложение regist - а, я сначала и подумал, что это замечание как раз касается "стиля" написания рядового пользователя. Вот я и прикинул, что здесь может быть "кучка" вариантов написания одной и той же команды - но при сравнении они, конечно же, будут все разные для моей программы. И просто будет сложно, учитывая все разнообразие команд на выполнение для avz, сделать поиск и удаление "дубликатов" какой то команды, вариантов написания которой может быть "кучкааа...". Но сдесь вроде не тот случай. По замечанию regist-а сделал коректировку в программе, чтобы эта проблемма исправлялась.
Архив с измененной программой, пока только в прикреплении к этому сообщению, для теста, так сказать.
 
По замечанию regist-а сделал коректировку в программе, чтобы эта проблемма исправлялась.
Архив с измененной программой, пока только в прикреплении к этому сообщению, для теста, так сказать.
1) Фикс касается только команды удаления, а для карантина и других команд оставили как есть?
2) Вроде ведь решили, что с пробелом наглядней и лучше читается, а программа этот пробел удаляет :(.
 
Вроде ведь решили, что с пробелом наглядней и лучше читается
Не буду возражать. Пусть будут пробелы. В прикреплении новая версия программы. Опять же нужно потестить, после удачного тестирования, заменю в хранилище.
 
1) Фикс касается только команды удаления, а для карантина и других команд оставили как есть?
это осталось по старому :(.
если для каждый команды это надо отдельно править, то хотя бы для команды карантина (как для одной из самых популярных) поправить.
 
Последнее редактирование:
это осталось по старому :(.
хотя бы для команд карантина это поправить.

Я не совсем понял суть замечания, пробелы должны добавлятся везде, а не в определенной только функции DeleteFile. Пример в студию, если не работает.
 
Извиняюсь, по команде карантина работает (оказывается запускал предыдущую тестовую версию). Замена пробелов везде тоже работает, но удаление дубликатов после этого уже не работает.
Код:
begin
ExecuteFile('net.exe', 'stop tcpip /y', 0, 15000, true);
ExecuteFile('net.exe', 'stop tcpip /y',0,15000, true); 
QuarantineFile('c:\test\test.exe', '');
QuarantineFile('c:\test\test.exe',''); 
DeleteFile('C:\WINDOWS\Tasks\At1.job', '32');
DeleteFile('C:\WINDOWS\Tasks\At1.job', '32'); 
DeleteFileMask('C:\DOCUME~1\User\LOCALS~1\viri\','*', true , ' ');
DeleteFileMask('C:\DOCUME~1\User\LOCALS~1\viri\', '*', true , ' '); 
RegKeyParamDel('HKLM', 'system\currentcontrolset\services\sharedaccess\parameters\firewallpolicy\standardprofile\authorizedapplications\list', 'C:\test.exe');
RegKeyParamDel('HKLM','system\currentcontrolset\services\sharedaccess\parameters\firewallpolicy\standardprofile\authorizedapplications\list','C:\test.exe');
RegKeyIntParamWrite('HKLM', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer','NoDriveTypeAutoRun',221);
RegKeyIntParamWrite('HKLM', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer', 'NoDriveTypeAutoRun', 221); 
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE', 'system\currentcontrolset\services\sharedaccess\parameters\firewallpolicy\standardprofile\authorizedapplications\list', 'C:\Windows\explorer.exe', 'C:\Windows\explorer.exe:*:Enabled:ipsec');
RegKeyStrParamWrite('HKEY_LOCAL_MACHINE','system\currentcontrolset\services\sharedaccess\parameters\firewallpolicy\standardprofile\authorizedapplications\list','C:\Windows\explorer.exe','C:\Windows\explorer.exe:*:Enabled:ipsec'); 
end.
 
Назад
Сверху Снизу