amel27
Цитата:
оказалось, что RegExp-аналог оригинальной функции _PathSplit() занимает всего одну строчку...
|
Оригинально, прадва расширение не возвращается...
Но вообще то, я делал функцию
_PathSplitByRegExp() не как аналог функции
_PathSplit(), а как что то более юзабельное и функциональнее, можно сказать что это как бы “мод” той функции

.
gregaz
Цитата:
А разве нельзя в этом же GUI вот так(тот же пример)
|
Можно, но лучше отдельно построить ГУИ для вывода информации, и поместить его в функцию, чтобы при каждом вызове небыло необходимости строить занового гуи:
Код:

#include <GuiConstants.au3>
$Gui = GUICreate("Demo GUI", 400, 300)
$Button1 = GUICtrlCreateButton("Button1", 100, 260, 70)
GUISetState()
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $Button1 ;нажата кнопка "Button1"
$Ret = _GuiMsgBox($WS_EX_TOPMOST, 2, "Info", "Текст 1" & @LF & "Текст 2", 330, 120, _
"Больше не показывать", "OK", "Отмена", $Gui)
MsgBox(0, "", "Вернувшееся значение: " & $Ret)
EndSwitch
WEnd
;Функция для показа самодельного окна MsgBox
Func _GuiMsgBox($Type, $ButtonsNumber, $Title, $Text, $Left, $Top, $CheckBoxText, $FirstButtonText="OK", $SecondButtonText="Cancel", $hWnd=0)
Local $Yes, $No, $OK, $CheckBox=-1, $Gui, $Msg, $ReturnVal = 0
If $hWnd <> 0 Then WinSetState($hWnd, "", @SW_DISABLE)
$Gui = GuiCreate($Title, $Left, $Top, -1, -1, -1, $Type, $hWnd)
GUICtrlCreateLabel($Text, ($Left-($Left-($Left/2/2)))/2, (($Top/2)/2)-10, $Left-($Left/2/2), 40, $SS_CENTER)
Select
Case $ButtonsNumber = 2
$Yes = GUICtrlCreateButton($FirstButtonText, ($Left/2)-90, ($Top/2), 70, 20)
$No = GUICtrlCreateButton($SecondButtonText, ($Left/2)+20, ($Top/2), 70, 20)
Case $ButtonsNumber > 2 Or $ButtonsNumber <= 1
$OK = GUICtrlCreateButton($FirstButtonText, ($Left-70)/2, $Top/2, 70, 20)
EndSelect
If $CheckBoxText <> "" Then $CheckBox = GUICtrlCreateCheckbox($CheckBoxText, 15, $Top-30)
GuiSetState(@SW_SHOW, $Gui)
While 1
$Msg = GUIGetMsg()
Select
Case $ButtonsNumber = 2 And $Msg = $Yes
If GUICtrlRead($CheckBox) = 1 Then
$ReturnVal = 6+8
Else
$ReturnVal = 6
EndIf
ExitLoop
Case $ButtonsNumber = 2 And $Msg = $No
If GUICtrlRead($CheckBox) = 1 Then
$ReturnVal = 7+8
Else
$ReturnVal = 7
EndIf
ExitLoop
Case ($ButtonsNumber = 1 Or $ButtonsNumber <> 2) And $Msg = $OK
If GUICtrlRead($CheckBox) = 1 Then
$ReturnVal = 1+8
Else
$ReturnVal = 1
EndIf
Case $Msg = -3
ExitLoop
EndSelect
Wend
If $hWnd <> 0 Then WinSetState($hWnd, "", @SW_ENABLE)
GUIDelete($Gui)
Return $ReturnVal
EndFunc
Цитата:
Просьба привести любой простой пример выполнения опросов состояний элементов GUI в разных циклах
|
Не уверен что понимаю просьбу, что значить в разных циклах? цикл не важен, важно действие, что именно требуеся опрашивать, если нужно проверить текст поля ввода, тогда GuiCtrlGetData, если нужно проверить зажат ли той или инной чекбокс (птичка), тогда GuiCtrlRead() - если 1, тогда зажата, в противном случе вернётся 4, и т.д.
Цитата:
Что означает Case -3 (GUIGetMsg()= -3 )? Какой-то идентификатор завершения процессов ???
|
-3 это тоже самое что и $GUI_EVENT_CLOSE, я просто изначально значение многих констант выучил наизусть, поэтому по привычке использую их как есть, это иногда удобно, и позволяет не использовать вложения библиотеки, типа #Include <GuiConstants.au3>. $GUI_EVENT_CLOSE это константа, функция GuiGetMsg() возвращает её значение (-3) если послана команда закрыть окно ГУИ (пользователь нажал крестик закрытия программы).
Diamond
Цитата:
Наверное дело в чём то другом...
|
Возможно...
Цитата:
Похожая ошибка возникает при попытке добавить в словарь ключ (Кеу) который там уже существует.
|
Но у меня выводилась ошибка именно на строке с проверкой $Dict.Exists...
P.S
Но я всё же больше доверяю массивам

(возможно боязень чего то нового).