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

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

regist

гоняюсь за туманом
Ассоциация VN/VIP
VIP
Разработчик
Сообщения
12,335
Реакции
5,956
Баллы
998
Сортировщик обрабатывает команды только между begin и end. Хотелось бы чтобы (в шаблон ?) можно было бы добавить ещё строчку var которая располагалась бы до begin.
 

beve

Разработчик
Сообщения
103
Реакции
273
Баллы
458
Сортировщик обрабатывает команды только между begin и end. Хотелось бы чтобы (в шаблон ?) можно было бы добавить ещё строчку var которая располагалась бы до begin.
Утилита создавалась для простых скриптов типа:
Код:
begin
... команды...
end.
В скриптах с секцией var, где объявляются переменные, как мне кажется, могут быть операции присвоения, сравнения и т.п., что уже выходит за рамки данной утилиты, так как уже невозможно будет, имея шаблон команд обработать по нему наш скрипт.
 

regist

гоняюсь за туманом
Ассоциация VN/VIP
VIP
Разработчик
Сообщения
12,335
Реакции
5,956
Баллы
998
beve, разумеется для сложных скриптов эта утилита не годится, но бывают очень простые скрипты с var. Например просто путь к папке автозагрузка считали из реестра и вынесли в переменную (такое часто применяется) и др. простые вариации.
 

beve

Разработчик
Сообщения
103
Реакции
273
Баллы
458
Например просто путь к папке автозагрузка считали из реестра и вынесли в переменну
Даже в таком простом действии не возможно будет опереться на шаблон. Ибо имя переменной может быть произвольной, значит в шаблон ее не возможно будет записать, а без этого и обработка будет не возможна, вот я о чем.
 

beve

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

Вложения

Последнее редактирование:

regist

гоняюсь за туманом
Ассоциация VN/VIP
VIP
Разработчик
Сообщения
12,335
Реакции
5,956
Баллы
998
При этом в секцию [Functions] нужно тоже будет добавить эту объявленную ранее переменную StartupFolder на свое место.
разве не перед ней ? У меня добавлено так
Код:
var StartupFolder :string;
[Functions]
Добавлено через 2 минуты 3 секунды
проверил оба варианта работают :).
 

beve

Разработчик
Сообщения
103
Реакции
273
Баллы
458
разве не перед ней ? У меня добавлено так
Код:
var StartupFolder :string;
[Functions]
Добавлено через 2 минуты 3 секунды
проверил оба варианта работают
Правильно будет только в в секцию [Functions] добавить StartupFolder. А запись var StartupFolder :string; должна присутствовать в скрипте avz.
 
Последнее редактирование:

regist

гоняюсь за туманом
Ассоциация VN/VIP
VIP
Разработчик
Сообщения
12,335
Реакции
5,956
Баллы
998
Вышла новая версия редактора и с ней утилита, как-то странно работает. После обработки скрипта в буфере обмена редактор скриптов "зависает" + при этом замечаю, что у меня открыто два окна редактора скриптов (для теста я копировал существующий скрипт из редактора), хотя до этого был открыто только одно окно. В итоге приходиться убивать процесс из диспетчера задач.
 

regist

гоняюсь за туманом
Ассоциация VN/VIP
VIP
Разработчик
Сообщения
12,335
Реакции
5,956
Баллы
998

Phoenix

Активный пользователь
Сообщения
2,105
Реакции
2,047
Баллы
433
Точно, виснет..
 

regist

гоняюсь за туманом
Ассоциация VN/VIP
VIP
Разработчик
Сообщения
12,335
Реакции
5,956
Баллы
998
Код:
begin
DeleteFile('C:\test\test.exe','32');
DeleteFile('C:\test\test.exe', '32');
end.
Утилита считает эти две команды разными. Нельзя ли поправить, чтобы игнорировала пробелы между параметрами.
 

beve

Разработчик
Сообщения
103
Реакции
273
Баллы
458
Утилита считает эти две команды разными.
Пробел же можно взять и поставить в любом месте команды, не только между параметрами, но еще и "перед запятой", и еще в паре других мест, в которых пробел не изменит суть команды на выполнение, но при сравнении утилитой команды окажуться разными из за пробелов. Разве не так? Мне кажеться бывают и такие случаи. Наверное все таки лучше при написании команд скрипта взять за правило придерживаться "стандарта" предложенного самим разработчиком AVZ.

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

Drongo

Ассоциация VN/VIP
Разработчик
Сообщения
7,844
Реакции
5,590
Баллы
808
Ну, скажем так, можно написать с пробелами, можно без, можно их поставить хз где угодно в дозволеном месте, для компилятора\парсера команд это не будет играть никакой роли. А вот читающему придётся напрягаться. Для примера, прочти это же сообщение с пробелами и без.

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

beve

Разработчик
Сообщения
103
Реакции
273
Баллы
458
Просто пробел визуально улучшает чтение кода.
С этим никто и не поспорит. Увидев предложение regist - а, я сначала и подумал, что это замечание как раз касается "стиля" написания рядового пользователя. Вот я и прикинул, что здесь может быть "кучка" вариантов написания одной и той же команды - но при сравнении они, конечно же, будут все разные для моей программы. И просто будет сложно, учитывая все разнообразие команд на выполнение для avz, сделать поиск и удаление "дубликатов" какой то команды, вариантов написания которой может быть "кучкааа...". Но сдесь вроде не тот случай. По замечанию regist-а сделал коректировку в программе, чтобы эта проблемма исправлялась.
Архив с измененной программой, пока только в прикреплении к этому сообщению, для теста, так сказать.
 

regist

гоняюсь за туманом
Ассоциация VN/VIP
VIP
Разработчик
Сообщения
12,335
Реакции
5,956
Баллы
998
По замечанию regist-а сделал коректировку в программе, чтобы эта проблемма исправлялась.
Архив с измененной программой, пока только в прикреплении к этому сообщению, для теста, так сказать.
1) Фикс касается только команды удаления, а для карантина и других команд оставили как есть?
2) Вроде ведь решили, что с пробелом наглядней и лучше читается, а программа этот пробел удаляет :(.
 

beve

Разработчик
Сообщения
103
Реакции
273
Баллы
458
Вроде ведь решили, что с пробелом наглядней и лучше читается
Не буду возражать. Пусть будут пробелы. В прикреплении новая версия программы. Опять же нужно потестить, после удачного тестирования, заменю в хранилище.
 

regist

гоняюсь за туманом
Ассоциация VN/VIP
VIP
Разработчик
Сообщения
12,335
Реакции
5,956
Баллы
998
1) Фикс касается только команды удаления, а для карантина и других команд оставили как есть?
это осталось по старому :(.
если для каждый команды это надо отдельно править, то хотя бы для команды карантина (как для одной из самых популярных) поправить.
 
Последнее редактирование:

beve

Разработчик
Сообщения
103
Реакции
273
Баллы
458
это осталось по старому :(.
хотя бы для команд карантина это поправить.
Я не совсем понял суть замечания, пробелы должны добавлятся везде, а не в определенной только функции DeleteFile. Пример в студию, если не работает.
 

regist

гоняюсь за туманом
Ассоциация VN/VIP
VIP
Разработчик
Сообщения
12,335
Реакции
5,956
Баллы
998
Извиняюсь, по команде карантина работает (оказывается запускал предыдущую тестовую версию). Замена пробелов везде тоже работает, но удаление дубликатов после этого уже не работает.
Код:
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.
 
  • Like
Реакции: beve
Сверху Снизу