Orion9

|
Posted: Mon Oct 13, 2025 17:32 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 |
|
|