View previous topic :: View next topic |
Author |
Message |
AkulaBig
Joined: 03 Dec 2008 Posts: 408
|
(Separately) Posted: Thu Aug 07, 2025 06:58 Post subject: |
|
|
Loopback wrote: | такое на обеих разрядностях? |
Да. Только в ТС32 нет знака вопроса в Class.
Loopback wrote: | в случае нормального выполнения, в строке Class: показывается "TTOTAL_CMD"? |
Да:
Loopback wrote: | вроде как проблемы автозакрытия окна никогда на 32-битном тотале не было.
|
Забыл спросить. Ничего не понятно. Окно ошибки должно автозакрываться даже не дав мне прочитав его? Раньше я его закрывал сам. |
|
Back to top |
|
 |
Loopback
Joined: 07 Sep 2009 Posts: 1581
|
(Separately) Posted: Thu Aug 07, 2025 12:31 Post subject: |
|
|
AkulaBig wrote: | Окно ошибки должно автозакрываться даже не дав мне прочитав его? |
Нет, конечно, имеется в виду тот баг в x64, из-за чего окно самозакрывается едва открывшись.
В общем, ещё раз прошу проверить с новой версией, по той же ссылке. Если и сейчас не прояснится, то видимо придется исправлять последствие, а выяснение глубинной причины отложить до момента, когда я смогу это повторить. |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 408
|
(Separately) Posted: Thu Aug 07, 2025 12:57 Post subject: |
|
|
Loopback
На всякий случай норм тоже прикладываю:
Сейчас еще при запуске ТС инфа стала появляться. Надо ее скрин? Там все норм.
Добавлено спустя 3 минуты:
Loopback wrote: | Нет, конечно, имеется в виду тот баг в x64, из-за чего окно самозакрывается едва открывшись. |
Понятно. У меня не автозакрывалось окно, если наг-скрин не появлялся. А сейчас на обоих разрядностях автозакрывается.
А попробую-ка я любимую ошибку воспроизвести. Знак процента прилепить. Точно помню, окно себя правильно вело при этой ошибке. |
|
Back to top |
|
 |
Loopback
Joined: 07 Sep 2009 Posts: 1581
|
(Separately) Posted: Thu Aug 07, 2025 13:10 Post subject: |
|
|
AkulaBig wrote: | Сейчас еще при запуске ТС инфа стала появляться. Надо ее скрин? |
Да, данные инициализации тоже нужно для случая, когда проблема проявляется. Лучше всего если получится вся информация на одном скрине, как на первом.
Да, и еще: вы разные тесты случайно делаете не с перезапуском RestartScript? |
|
Back to top |
|
 |
yahuu
Joined: 22 Jun 2023 Posts: 34
|
(Separately) Posted: Thu Aug 07, 2025 14:15 Post subject: |
|
|
Почему только первый является действительным?
Code: | SetHotkeyAction /K:A /H:F ShowPopupMenu %COMMANDER_PATH%\User\Files.BAR 500 600
SetHotkeyAction /K:A /H:F ShowPopupMenu(Set(%COMMANDER_PATH%"\User\Files.BAR"),500,600)
SetHotkeyAction /K:A /H:F ShowPopupMenu(COMMANDER_PATH & '\User\Files.BAR',500,600)
SetHotkeyAction /K:A /H:F ShowPopupMenu(COMMANDER_PATH & "\User\Files.BAR",500,600)
str = COMMANDER_PATH & "\User\Files.BAR"
SetHotkeyAction /K:A /H:F ShowPopupMenu(str,500,600) |
|
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 408
|
(Separately) Posted: Thu Aug 07, 2025 14:25 Post subject: |
|
|
Loopback wrote: | вся информация на одном скрине, как на первом. |
Loopback wrote: | вы разные тесты случайно делаете не с перезапуском RestartScript? |
Я вот и хотел написать. Эта ошибка у меня прописана при переключении языка. В ходе которого я делаю перезагрузку. Так что данные инициализации навряд-ли интересны. Попробую в основном autorun.cfg прописать.
Ну и вот реакция на нормальную ошибку:
Как видите, окно не исчезает. И показывается в правильном положении. И все это в ТС64!
Добавлено спустя 6 минут:
Loopback
Нет, больше найти место для этого косяка не удалось. В остальных случая хорошая ошибка появляется. |
|
Back to top |
|
 |
Loopback
Joined: 07 Sep 2009 Posts: 1581
|
(Separately) Posted: Thu Aug 07, 2025 20:56 Post subject: |
|
|
AkulaBig
Спасибо за тесты. В всяком случае уже видно, что изначально найденный хэндл окна ТС проходит тест, и, если дать возможность скрипту выполниться до конца, то и в конце тест тоже успешно проходится. Ошибка возникает только в оконной функции диалога, значит невалидным хэндл становится непосредственно до вызова этого диалога. Есть подозрение, что какая-то функция незадолго до места, где возникает "плохая" ошибка, лезет куда-то не туда и что-то портит. Это, кстати, бьется с вашим наблюдениями
AkulaBig wrote: | То-есть написал я строке 111. Появилось сообщение об ошибке. Написал 111 на 15-20 строк ниже. Окно сообщения об ошибке стало появляться в верхнем левом углу экрана |
AkulaBig wrote: | Нет, больше найти место для этого косяка не удалось. В остальных случая хорошая ошибка появляется. |
Хорошо бы посмотреть эти 15-20 строк перед "плохой" ошибкой.
AkulaBig wrote: | Так что данные инициализации навряд-ли интересны. |
Очень даже интересны, при инициализации получаем хэндл окна тотала.
yahuu wrote: | Почему только первый является действительным? |
Во втором и остальных случаях вы смешиваете командный синтаксис с функциональным.
Функция здесь только одна - SetHotkeyAction, со своими параметрами. ShowPopupMenu здесь - это не функция как таковая, а строка с именем функции. Это (не считая переключателей) - первый параметр функции SetHotkeyAction. Все параметры после имени функции (%COMMANDER_PATH%\User\Files.BAR 500 600) - это тоже параметры SetHotkeyAction, второй, третий и четвертый. При нажатии комбинации клавиш будет вызвана функция ShowPopupMenu и ей будут переданы эти параметры.
Это частая ошибка. Для лучшего понимания первую запись можно записать так (обратите внимание на кавычки вокруг ShowPopupMenu, это просто строка):
Code: | SetHotkeyAction /K:A /H:F "ShowPopupMenu" "%COMMANDER_PATH%\User\Files.BAR" "500" "600" |
Еще лучше это видно в функциональной записи:
Code: | SetHotkeyAction("~/K:A /H:F", "ShowPopupMenu", COMMANDER_PATH & "\User\Files.BAR", 500, 600) |
Так что нужно просто использовать либо один, либо другой синтаксис для записи целиком. |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 408
|
(Separately) Posted: Thu Aug 07, 2025 21:42 Post subject: |
|
|
Loopback wrote: | Хорошо бы посмотреть эти 15-20 строк перед "плохой" ошибкой. |
Дак это только в одном из файлов *.aucfg. А перед ним в других файлах сотни и тысячи строк. Может вам проще сборку скачать?
Code: | Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\CharDetect.aucfg
# Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\ControlID.aucfg
Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\CustomFields.aucfg
Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\IcoNumber.aucfg
Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\Restart.aucfg
Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\SwitchAssoc.aucfg
Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\SwitchColor.aucfg
Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\SwitchDrivesIcon.aucfg
Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\SwitchFilesIcon.aucfg
Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\SwitchIniSect.aucfg
Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\SwitchLang.aucfg
Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\SwitchSound.aucfg
Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\SwitchTitleInfo.aucfg
Pragma Include %COMMANDER_PATH%\Plugins\wdx\Autorun\SwitchTypeHints.aucfg
|
Вот такой список файлов. Ошибку тестирую в SwitchLang.aucfg в функции работы с потоком. Но не факт, что где-то в другом месте это не сработает.
А так вот этот кусок:
Code: | 123
Local Buttonbar = IniRead(ini_Buttonbar, "Buttonbar", "Buttonbar", "")
Local ButtonbarVertical = IniRead(ini_ButtonbarVertical, "ButtonbarVertical", "Buttonbar", "")
SwitchIniSect(Set(Buttonbar), sect_Buttonbar, lng)
SwitchIniSect(Set(ButtonbarVertical), sect_Buttonbar, lng)
SwitchIniSect(ini_Colors, sect_Colors, lng)
If FileExist(ini_Colors0) Then
SwitchIniSect(ini_Colors0, sect_Colors, lng)
EndIf
If FileExist(ini_Colors1) Then
SwitchIniSect(ini_Colors1, sect_Colors, lng)
EndIf
If FileExist(ini_Colors2) Then
SwitchIniSect(ini_Colors2, sect_Colors, lng)
EndIf
If FileExist(ini_Colors3) Then
SwitchIniSect(ini_Colors3, sect_Colors, lng)
EndIf
If FileExist(ini_Colors4) Then
SwitchIniSect(ini_Colors4, sect_Colors, lng)
EndIf
If FileExist(ini_Colors5) Then
SwitchIniSect(ini_Colors5, sect_Colors, lng)
EndIf
SwitchIniSect(ini_CustomFields, sect_CustomFields, lng)
SwitchIniSect(ini_DirMenu, sect_DirMenu, lng)
SwitchIniSect(ini_FileSystemPlugins, sect_FileSystemPlugins, lng)
SwitchIniSect(ini_FileSystemPlugins, sect_FileSystemPlugins64, lng)
SwitchIniSect(ini_HintsCustomField, sect_HintsCustomField, lng)
SwitchIniSect(ini_ListerModes, sect_ListerModes, lng)
SwitchIniSect(ini_Searches, sect_Searches, lng)
SwitchIniSect(ini_User, sect_User, lng)
SwitchIniSect(ini_ToolsBar, sect_Buttonbar, lng)
SwitchIniSect(ini_UserBar, sect_Buttonbar, lng)
123 |
Первая 123 нормальное окно, второе - за пределами экрана. Конечно я их по очереди писал, не вместе. |
|
Back to top |
|
 |
Loopback
Joined: 07 Sep 2009 Posts: 1581
|
(Separately) Posted: Thu Aug 07, 2025 22:45 Post subject: |
|
|
AkulaBig wrote: | А перед ним в других файлах сотни и тысячи строк. Может вам проще сборку скачать? |
Кстати да, согласен, так и сделаю, завтра скачаю, посмотрю. Может и ошибку словлю. |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 408
|
|
Back to top |
|
 |
Loopback
Joined: 07 Sep 2009 Posts: 1581
|
(Separately) Posted: Fri Aug 08, 2025 12:56 Post subject: |
|
|
AkulaBig
Скачал, проверил, попереставлял в разные места. По-прежнему ничего не проявляется, это было бы слишком просто.
Вроде не вижу ничего критичного в предшествующих строках, кроме функции SwitchIniSect, которая вызывается множество раз, при этом использует DllCall/Buffer, потенциально наиболее "опасные" функции. В принципе из явных ошибок там только то, что buf не освобождается функцией Free, нужно добавить
Code: | Local out = buf.GetStr(0, bytes)
Free(buf) |
Но это вряд ли могло повлиять. Я бы проверил с вариантом без DllCall/Buffer, изменится ли что-нибудь. Переделал SwitchIniSect на встроенном функционале, попробуйте у себя.
 Hidden text
Code: | Func SwitchIniSect(sIni, sSect, sLng)
# Поддерживаемые языки
# Supported languages
Local arrLang = List("eng", "rus")
Local arrFile = List()
Local i = 0
arrFile.LoadFromFile(sIni)
Local out = arrFile.Text
# Проверяем количество языковых секций в файле по шаблону [$sSect
# Check number of language sections in file according to template [$ ssect
Local count = 0
For i = 0 To arrFile.Count-1
If StrPos(arrFile._Item[i], "[" & sSect) > 0 Then
count += 1
EndIf
Next
# Если в файле только одна секция по шаблону [$sSect, завершаем выполнение
# скрипта
# If file has only one section on template [$ ssect, we complete execution
# script
If count <= 1 Then
Free(arrLang)
Free(arrFile)
Exit
Endif
# Переименовываем все секции по шаблону [sect_lng]
# Rename all sections according to template [sect_lng]
For i = 0 To arrLang.Count-1
If StrPos(out, "[" & sSect & "_" & arrLang._Item[i] & "]") = 0 Then
out = StrReplace(out, "[" & sSect & "]", "[" & sSect & "_" & arrLang[i] & "]")
Break
EndIf
Next
# Переименовываем оригинальную секции по шаблону [sect]
# Rename original section according to template [sect]
If StrPos(out, "[" & sSect & "_" & sLng & "]") Then
out = StrReplace(out, "[" & sSect & "_" & sLng & "]", "[" & sSect & "]")
Endif
arrFile.Text = out
arrFile.SaveToFile(sIni)
Free(arrLang)
Free(arrFile)
EndFunc |
|
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 408
|
(Separately) Posted: Fri Aug 08, 2025 15:32 Post subject: |
|
|
Loopback wrote: | По-прежнему ничего не проявляется |
Возможно Винда. У меня 24 со всеми обновлениями. А у вас?
Loopback wrote: | buf не освобождается функцией Free, нужно добавить |
Понял, спасибо.
Loopback wrote: | попробуйте у себя |
Попробую, отпишусь.
Loopback wrote: | Переделал SwitchIniSect на встроенном функционале |
Это этапы развития Autorun. На тот момент только так можно было. Поэтому у меня не мало кусков, где одни и те-же задачи решаются разным кодом. Я выше писал, что оф 2.1 у меня уже не работает.
Добавлено спустя 19 минут:
Loopback
Быстро не получится протестировать. Буфер у меня в двух местах не освобождался. Прописал фри. Ничего не изменилось. Потом скопипастил вашу функция не глядя. Ошибка исчезла вообще. Но настройки сборки очень сильно множественно пострадали. Теперь мне надо разбираться с функцией.
Добавлено спустя 4 минуты:
Оказывается теперь просто весь мой код не работает. Буду разбираться. |
|
Back to top |
|
 |
Loopback
Joined: 07 Sep 2009 Posts: 1581
|
(Separately) Posted: Fri Aug 08, 2025 22:29 Post subject: |
|
|
23H2, хотя не думаю, что это имеет большое значение. Я ее только для тестов иногда использовал. Попробую обновить.
AkulaBig wrote: | Это этапы развития Autorun. На тот момент только так можно было. |
Прекрасно понимаю. Помню мы что-то правили в этом коде. Как говорится, работает - не трогай Ну а с релизной 2.1 слишком много нового появилось.
AkulaBig wrote: | Оказывается теперь просто весь мой код не работает |
Ну вот собственно и подтверждение. Формально-то я проверил, но все равно что-то пошло не так.
На самом деле вовсе необязательно менять имеющийся код. Просто хотелось проверить без рискованных функций и понять причину той странной ошибки. |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 408
|
(Separately) Posted: Sat Aug 09, 2025 05:33 Post subject: |
|
|
Loopback wrote: | 23H2, хотя не думаю, что это имеет большое значение. |
Имеет большое значение. В 24 огромные изменения. На других форумах мы с этим столкнулись. Например, другой движок джава. Еще что-то. Может и наша проблема из-за этого.
Loopback wrote: | На самом деле вовсе необязательно менять имеющийся код. |
Разберемся, просто время нужно. |
|
Back to top |
|
 |
AkulaBig
Joined: 03 Dec 2008 Posts: 408
|
(Separately) Posted: Sat Aug 09, 2025 11:03 Post subject: |
|
|
Loopback
Подозреваю в этом проблема:
У меня ведь все инишки в юникоде. Иначе ранее не работало. |
|
Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|