View previous topic :: View next topic |
Author |
Message |
yozhik

Joined: 04 May 2014 Posts: 308 Location: Электросталь
|
|
Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 900
|
(Separately) Posted: Wed Oct 08, 2025 20:23 Post subject: |
|
|
yozhik
Нет, не знал. Спасибо инфу. Мне еще понравилось описание в вашем профиле - читал как на иголках. Одна строчка, а словно триллер качественный посмотрел ) |
|
Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 900
|
(Separately) Posted: Mon Oct 13, 2025 13:31 Post subject: |
|
|
yozhik
Боюсь, что эпопея с CodeFold еще не закончена и, вероятно, еще долго будет длиться.
После такой функции следующие за ней функции вкладываются:
Code: | Func WdxFieldType(ft_num)
Local s
Switch ft_num
Case 0
s = "ft_nomorefields"
Case 1
s = "ft_numeric_32"
Case 2
s = "ft_numeric_64"
Case 3
s = "ft_numeric_floating"
Case 4
s = "ft_date"
Case 5
s = "ft_time"
Case 6
s = "ft_boolean"
Case 7
s = "ft_multiplechoice"
Case 8
s = "ft_string"
Case 9
s = "ft_fulltext"
Case 10
s = "ft_datetime"
Case 11
s = "ft_stringw"
Case 12
s = "ft_fulltextw"
EndSwitch
Return s
EndFunc |
В другом модуле вкладываение начинается после такой строчки:
Code: | If bkg1 = -1 Then bkg1 = 1*255 + 256*255 + 65536*255 |
|
|
Back to top |
|
 |
yozhik

Joined: 04 May 2014 Posts: 308 Location: Электросталь
|
(Separately) Posted: Mon Oct 13, 2025 15:11 Post subject: |
|
|
Orion9
Первое поправил — Case..EndSwitch был жадным и блокировал Switch..EndSwitch.
А второе не получается воспроизвести. Если можно, выложите модуль посмотреть, может там не в If..Then дело, а в чём другом. _________________ Amo ergo sum |
|
Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 900
|
(Separately) Posted: Mon Oct 13, 2025 17:15 Post subject: |
|
|
yozhik
Да, я давно заметил, что ему именно Case..EndSwitch не "заходит". Взял исправленный .coder, проблема ушла, но частично. Теперь другие функции ниже WdxFieldType вкладываются. Надо бы все модули перетряхнуть, раз уж взялся, но вы пока посмотрите пару моментов.
1) Пример из справки. За DateDiff функции вкладываются:
Code: | Func DateDiff(DateTime1, DateTime2, Unit)
Local TS1 = IsInt(DateTime1) ? DateTime1 : ToDateTime(DateTime1)
Local TS2 = IsInt(DateTime2) ? DateTime2 : ToDateTime(DateTime2)
Local Diff = (TS1 - TS2) / 10000000
Switch Unit
Case "M"
Return Floor(Diff / 60)
Case "H"
Return Floor(Diff / 3600)
Case "D"
Return Floor(Diff / 86400)
Else
Return Diff
EndSwitch
EndFunc |
2) Проблема действительно была не в If..Then, а в том, что выше по телу функции есть такое:
Code: | If lParam = 1 And IsPressed(0x5B) Then
SwitchColors(1)
Return
EndIf |
Видимо ему не нравится имя функции SwitchColors:
Code: | RegisterCommand 70051 "SwitchColors"
Func SwitchColors(lParam)
EndFunc |
Добавлено спустя 7 минут:
После этой функции тоже вкладываются:
 Hidden text Code: | Func CreateUwdxBar(Barname)
Local i = 0
Local bar, br2, wdx
# относительный путь к утилите
Local uwdx_dir = REL_UWDX
Local uwdx_exe = "%COMMANDER_PATH%" & uwdx_dir & "uwdx.exe"
Local uwdx_con = "%%COMMANDER_PATH%%" & uwdx_dir & "uwdx.exe"
Local uwdx_obj = "%P%N"
bar = DIR_BARS & barname & ".bar"
br2 = DIR_BARS & barname & ".br2"
ShellExec /SW_HIDE /WAIT:2000 %COMSPEC% "/c del /f /q ""%bar%"""
ShellExec /SW_HIDE /WAIT:2000 %COMSPEC% "/c del /f /q ""%br2%"""
If FileExist(bar) Then
MsgBox("Ошибка удаления " & bar, "uwdx")
Return 0
Endif
IniWrite %bar% "Buttonbar" "Buttoncount" "0"
If ERROR = 1 Then
MsgBox("Ошибка создания " & bar, "uwdx")
Return 0
EndIf
While i < 100
IniRead /R wdx %COMMANDER_INI% "ContentPlugins" %"i" "stop"
If wdx="stop" Then Break
wdx = StrTrim(StrRight(wdx, StrLen(wdx)-StrPos(wdx, "\", -1)))
IniWrite %bar% "Buttonbar" %"'Button' & i+1" %uwdx_exe%
IniWrite %bar% "Buttonbar" %"'Menu' & i+1" %wdx%
IniWrite /EV- %bar% "Buttonbar" %"'Cmd' & i+1" "%COMSPEC% /k"
Switch Barname
Case "Auto_uwdxa"
IniWrite %bar% "Buttonbar" %"'Param' & i+1" '"""%uwdx_con%""" /I %wdx% ""%uwdx_obj%""'
Case "Auto_uwdxe"
IniWrite %bar% "Buttonbar" %"'Param' & i+1" '"""%uwdx_con%""" /E /I %wdx% ""%uwdx_obj%""'
Else
IniWrite %bar% "Buttonbar" %"'Param' & i+1" '"""%uwdx_con%""" /I "%wdx%"'
EndSwitch
i = i + 1
Wend
IniWrite %bar% "Buttonbar" "Buttoncount" %i%
Return 1
EndFunc |
Добавлено спустя 11 минут:
Еще одна от Loopback:
 Hidden text Code: | Func FindSelectedAndClear(hMenu, bRight)
Local nCount = DllCall("GetMenuItemCount", "handle", hMenu)
If nCount = 0 Then Return 0
Local Result = 0
Static lpmii = Buffer(AUTORUN_TCARCH = 64 ? 80 : 48)
lpmii.Zero()
lpmii.SetNum(0, "uint", lpmii.size, "uint", 1) # MIIM_STATE
For i = nCount - 1 to 0 Step -1
DllCall("GetMenuItemInfoW", "handle", hMenu, "uint", i, "bool", 1, "ptr", lpmii.ptr)
If lpmii.GetNum(12) = 0x8 Then # MFS_CHECKED
Switch i
Case 0
Result = bRight ? 201 : 101
Case 1
Result = bRight ? 202 : 102
Case 2
Result = bRight ? 200 : 100
Case 3
Result = bRight ? 169 : 69
Else
Result = 70 + i - 7
If Result < 100 Then
If bRight Then Result += 100
Else
Result += (bRight ? 7030 : 6530) - 100
EndIf
EndSwitch
EndIf
DllCall("RemoveMenu", "handle", hMenu, "uint", i, "uint", 0x400)
Next
Return Result
EndFunc |
|
|
Back to top |
|
 |
yozhik

Joined: 04 May 2014 Posts: 308 Location: Электросталь
|
(Separately) Posted: Mon Oct 13, 2025 22:11 Post subject: |
|
|
Orion9
Путаницу Else..EndSwitch с Else..EndIf пока поборол.
Для разграничения Switch и Switch... пока соорудил костыль. Все последние примеры обрабатываются сейчас корректно. По идее не должно было так произойти, чтобы SwitchColor прокатил вместо Switch, плагин должен проверять разделитель (пробел) справа от Switch. Или я, как обычно, недопонял чего Написал пока на форуме AkelPad, поглядим что скажут. _________________ Amo ergo sum |
|
Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 900
|
(Separately) Posted: Mon Oct 13, 2025 23:58 Post subject: |
|
|
yozhik
Спасибки ) Вот теперь первые впечатления, что всё нормально.
Панель CodeFold непривычно наполнилась новыми функциями, даже приятно стало перемещаться по коду и в самом окне CodeFold. Но завтра еще буду проверять. |
|
Back to top |
|
 |
Orion9

Joined: 01 Jan 2024 Posts: 900
|
(Separately) Posted: Tue Oct 14, 2025 11:49 Post subject: |
|
|
yozhic
Проверил все модули. Проблемы с вложением функций больше нет. Теперь если что-то и искать, то только внутри самих функций и скорее всего с другими блоками. Но важно, что при открытии модуля все его функции сейчас видны и доступны для корректных операций в плагине Coder. |
|
Back to top |
|
 |
yozhik

Joined: 04 May 2014 Posts: 308 Location: Электросталь
|
(Separately) Posted: Tue Oct 14, 2025 12:02 Post subject: |
|
|
Orion9
Добро. Осилили совместными усилиями Я ещё жду ответа о работе Coder с разделителями в Folds. Бывает, надо подождать, автор — человек отзывчивый, но занятой. _________________ Amo ergo sum |
|
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
|