| 1 | ; Notes by FichteFoll ###########################
|
|---|
| 2 | ; - Fixed: $h_Out showing 1 randomly; now shows nothing if nothing found
|
|---|
| 3 | ; - Fixed: $s_lgth can be higher than 6 using StringLen and will not be 2 if array has 10 indexes (having 9 as last)
|
|---|
| 4 | ; - Fixed: WaitMessage had fixed height and width, multiple lines or too long lines would not be shown. Now generates them dynamically
|
|---|
| 5 | ; - Changed: WaitMessage() or WaitMessage('') disables the SplashText (just as ToolTip); required _Max (Misc.au3)
|
|---|
| 6 | ; - Changed: Using global var $h_Wnd instead of window title for WinGetPos
|
|---|
| 7 | ; - Changed: Seperator character ($c_Sep) is 0x0B instead of "|" because patterns were splitted while writing into the combo control
|
|---|
| 8 | ; - Changed: Tries to evaluate helpfilepath using AutoIt's install dir (RegRead64 from "AutoUpdateIt.au3") if @AutoItExe failed
|
|---|
| 9 | ; Also renamed $helppath to $autoitpath
|
|---|
| 10 | ; - Changed: Removed X and Y parameters for GUICreate because it's positioned in the middle of the screen by default
|
|---|
| 11 | ; - Added: $h_Err will be colored red if @error <> 0
|
|---|
| 12 | ; ###############################################
|
|---|
| 13 |
|
|---|
| 14 | #include <GUIConstantsEx.au3>
|
|---|
| 15 | #include <EditConstants.au3>
|
|---|
| 16 | #include <WindowsConstants.au3>
|
|---|
| 17 |
|
|---|
| 18 | Opt('MustDeclareVars', 1)
|
|---|
| 19 |
|
|---|
| 20 | Global $s_Pattern = "(.*)", $h_Wnd, $c_Sep = Chr(11) ; 0x0B = VT
|
|---|
| 21 | Global $h_Radio_0, $h_Radio_1, $h_Radio_3
|
|---|
| 22 |
|
|---|
| 23 | Opt('GUIDataSeparatorChar', $c_Sep)
|
|---|
| 24 | Example()
|
|---|
| 25 |
|
|---|
| 26 | Func Example()
|
|---|
| 27 |
|
|---|
| 28 | Local $initialDir = "C:\", $h_Indummy, $h_tab, $h_tabitem1, $h_In1, $msg
|
|---|
| 29 | Local $h_tabitem2, $h_Brwse, $h_fileIn, $h_In2, $h_Out, $h_Pattern, $v_Reg_Old
|
|---|
| 30 | Local $h_Pattern_add, $h_Pattern_del, $h_test, $h_Err, $h_Ext, $h_Help, $h_Exit
|
|---|
| 31 | Local $filepath, $str2, $autoitpath, $h_In
|
|---|
| 32 |
|
|---|
| 33 | Readini()
|
|---|
| 34 | $h_Wnd = GUICreate("StringRegExp Original Design GUI -by w0uter, modified Steve8tch and FichteFoll", 550, 570);, (@DesktopWidth - 550) / 2, (@DesktopHeight - 570) / 2)
|
|---|
| 35 | GUICtrlCreateGroup("The pattern - $ptn", 10, 210, 530, 60)
|
|---|
| 36 | GUICtrlCreateGroup("Output", 140, 280, 400, 280)
|
|---|
| 37 | GUICtrlCreateGroup("Return", 10, 280, 120, 100)
|
|---|
| 38 | GUICtrlCreateGroup("@Error @Extended", 10, 390, 120, 50)
|
|---|
| 39 | GUICtrlCreateGroup("StringRegExp Help", 10, 450, 120, 50)
|
|---|
| 40 | $h_Radio_0 = GUICtrlCreateRadio("True/False", 20, 300, 100, 20)
|
|---|
| 41 | $h_Radio_1 = GUICtrlCreateRadio("Array with the text", 20, 321, 100, 27)
|
|---|
| 42 | $h_Radio_3 = GUICtrlCreateRadio("Array of all results", 20, 350, 100, 20)
|
|---|
| 43 | GUICtrlSetState($h_Radio_3, $GUI_CHECKED)
|
|---|
| 44 | $h_Indummy = GUICtrlCreateEdit("", 1020, 1040, 510, 150, BitOR($ES_WANTRETURN, $WS_VSCROLL, $WS_HSCROLL, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL))
|
|---|
| 45 | $h_tab = GUICtrlCreateTab(10, 10, 530, 190)
|
|---|
| 46 | $h_tabitem1 = GUICtrlCreateTabItem("Copy and Paste the text to check - $str")
|
|---|
| 47 | $h_In1 = GUICtrlCreateEdit("", 20, 40, 510, 150, BitOR($ES_WANTRETURN, $WS_VSCROLL, $WS_HSCROLL, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL))
|
|---|
| 48 |
|
|---|
| 49 | $h_tabitem2 = GUICtrlCreateTabItem("Load text from File")
|
|---|
| 50 | $h_Brwse = GUICtrlCreateButton("Browse for file", 20, 40, 100, 20)
|
|---|
| 51 | $h_fileIn = GUICtrlCreateEdit("", 130, 40, 400, 20, BitOR($ES_WANTRETURN, $WS_HSCROLL, $ES_AUTOHSCROLL))
|
|---|
| 52 | $h_In2 = GUICtrlCreateEdit("", 20, 70, 510, 120, BitOR($ES_WANTRETURN, $WS_VSCROLL, $WS_HSCROLL, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL))
|
|---|
| 53 |
|
|---|
| 54 | GUICtrlCreateTabItem("");
|
|---|
| 55 | $h_Out = GUICtrlCreateEdit("", 150, 296, 380, 262, BitOR($ES_WANTRETURN, $WS_VSCROLL, $WS_HSCROLL, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL))
|
|---|
| 56 | $h_Pattern = GUICtrlCreateCombo("", 70, 230, 430, 30)
|
|---|
| 57 | GUICtrlSetFont($h_Pattern, 14)
|
|---|
| 58 | GUICtrlSetData($h_Pattern, $s_Pattern, "(.*)")
|
|---|
| 59 | $h_Pattern_add = GUICtrlCreateButton("Add", 504, 225, 30, 18)
|
|---|
| 60 | $h_Pattern_del = GUICtrlCreateButton("Del", 504, 245, 30, 18)
|
|---|
| 61 | $h_test = GUICtrlCreateButton("Test", 20, 235, 40, 20)
|
|---|
| 62 | $h_Err = GUICtrlCreateInput("", 20, 410, 40, 20, $ES_READONLY)
|
|---|
| 63 | $h_Ext = GUICtrlCreateInput("", 70, 410, 50, 20, $ES_READONLY)
|
|---|
| 64 | $h_Help = GUICtrlCreateButton("HELP", 20, 468, 100, 24)
|
|---|
| 65 | $h_Exit = GUICtrlCreateButton("Exit", 10, 510, 120, 50)
|
|---|
| 66 | $v_Reg_Old = 0
|
|---|
| 67 | $h_In = $h_In1
|
|---|
| 68 | GUISetState()
|
|---|
| 69 | While 1
|
|---|
| 70 | $msg = GUIGetMsg()
|
|---|
| 71 | Select
|
|---|
| 72 | Case $msg = $GUI_EVENT_CLOSE
|
|---|
| 73 | Exit
|
|---|
| 74 | Case $msg = $h_test
|
|---|
| 75 | _Valid($h_Out, $h_Pattern, $h_Err, $h_Ext, $v_Reg_Old, $h_In)
|
|---|
| 76 | Case $msg = $h_Exit
|
|---|
| 77 | Exit
|
|---|
| 78 | Case $msg = $h_Brwse
|
|---|
| 79 | $filepath = FileOpenDialog("Select text file to test", $initialDir, "Text files (*.*)", 1)
|
|---|
| 80 | $initialDir = StringTrimRight($filepath, StringInStr($filepath, "\", "-1"))
|
|---|
| 81 | GUICtrlSetData($h_fileIn, $filepath)
|
|---|
| 82 | WaitMessage("Loading file..")
|
|---|
| 83 | $str2 = FileRead($filepath)
|
|---|
| 84 | WaitMessage("File loaded.." & @CRLF & "updating display")
|
|---|
| 85 | GUICtrlSetData($h_In2, $str2)
|
|---|
| 86 | WaitMessage()
|
|---|
| 87 | Case $msg = $h_tab
|
|---|
| 88 | If GUICtrlRead($h_tab) = 0 Then
|
|---|
| 89 | $h_In = $h_In1
|
|---|
| 90 | Else
|
|---|
| 91 | $h_In = $h_In2
|
|---|
| 92 | EndIf
|
|---|
| 93 | Case $msg = $h_Pattern_add
|
|---|
| 94 | Pattern_Add($h_Pattern)
|
|---|
| 95 |
|
|---|
| 96 | Case $msg = $h_Pattern_del
|
|---|
| 97 | Pattern_del($h_Pattern)
|
|---|
| 98 |
|
|---|
| 99 | Case $msg = $h_Help
|
|---|
| 100 | $autoitpath = StringLeft(@AutoItExe, StringInStr(@AutoItExe, "\", 0, -1))
|
|---|
| 101 | Run($autoitpath & "Autoit3Help.exe StringRegExp")
|
|---|
| 102 | If @error = 1 Then
|
|---|
| 103 | $autoitpath = RegRead64('HKLM\Software\AutoIt v3\AutoIt', 'InstallDir')
|
|---|
| 104 | Run($autoitpath & "\Autoit3Help.exe StringRegExp")
|
|---|
| 105 | If @error Then MsgBox(0, "error", "Cannot find help file - sorry")
|
|---|
| 106 | EndIf
|
|---|
| 107 | Case Else
|
|---|
| 108 | ;;
|
|---|
| 109 | EndSelect
|
|---|
| 110 | WEnd
|
|---|
| 111 | EndFunc ;==>Example
|
|---|
| 112 |
|
|---|
| 113 | Func _Valid(ByRef $h_Out, ByRef $h_Pattern, ByRef $h_Err, ByRef $h_Ext, ByRef $v_Reg_Old, ByRef $h_In)
|
|---|
| 114 | Local $v_Reg, $v_Check, $h_output, $x, $s_lgth
|
|---|
| 115 | WaitMessage("Performing test..")
|
|---|
| 116 | $v_Reg = StringRegExp(GUICtrlRead($h_In), GUICtrlRead($h_Pattern), _Option())
|
|---|
| 117 | Dim $v_EE[2] = [@error, @extended]
|
|---|
| 118 | If $v_EE[0] = 2 Then
|
|---|
| 119 | GUICtrlSetColor($h_Pattern, 0xFF0000)
|
|---|
| 120 | Else ; 1, 0
|
|---|
| 121 | GUICtrlSetColor($h_Pattern, 0)
|
|---|
| 122 | EndIf
|
|---|
| 123 | GUICtrlSetData($h_Err, $v_EE[0])
|
|---|
| 124 | GUICtrlSetData($h_Ext, $v_EE[1])
|
|---|
| 125 |
|
|---|
| 126 | WaitMessage("Test complete.." & @CRLF & "updating display")
|
|---|
| 127 |
|
|---|
| 128 | If $v_EE[0] = 0 Then
|
|---|
| 129 | GUICtrlSetColor($h_Err, 0)
|
|---|
| 130 | $v_Check = 0
|
|---|
| 131 | If UBound($v_Reg) <> UBound($v_Reg_Old) Then
|
|---|
| 132 | $v_Check = 1
|
|---|
| 133 | Else
|
|---|
| 134 | For $i = 0 To UBound($v_Reg) - 1
|
|---|
| 135 | If $v_Reg[$i] <> $v_Reg_Old[$i] Then $v_Check = 1
|
|---|
| 136 | Next
|
|---|
| 137 | EndIf
|
|---|
| 138 | If $v_Check = 1 Then
|
|---|
| 139 | GUICtrlSetData($h_Out, "")
|
|---|
| 140 | $h_output = ""
|
|---|
| 141 | $x = UBound($v_Reg)
|
|---|
| 142 | $s_lgth = StringLen(String($x - 1))
|
|---|
| 143 |
|
|---|
| 144 | If $x Then
|
|---|
| 145 | For $i = 0 To $x - 1
|
|---|
| 146 | $h_output &= StringFormat("%0" & $s_lgth & "i", $i) & ' => ' & $v_Reg[$i] & @CRLF
|
|---|
| 147 | Next
|
|---|
| 148 | GUICtrlSetData($h_Out, $h_output)
|
|---|
| 149 | Else
|
|---|
| 150 | GUICtrlSetData($h_Out, $v_Reg)
|
|---|
| 151 | EndIf
|
|---|
| 152 | EndIf
|
|---|
| 153 | Else ; $v_EE[0] = 1 or 2
|
|---|
| 154 | GUICtrlSetData($h_Out, "")
|
|---|
| 155 | GUICtrlSetColor($h_Err, 0xFF0000)
|
|---|
| 156 | EndIf
|
|---|
| 157 |
|
|---|
| 158 | WaitMessage()
|
|---|
| 159 | $v_Reg_Old = $v_Reg
|
|---|
| 160 | StringRegExp('', Random(0x80000000, 0x7FFFFFFF), 1)
|
|---|
| 161 | EndFunc ;==>_Valid
|
|---|
| 162 |
|
|---|
| 163 | Func _Option()
|
|---|
| 164 | Switch $GUI_CHECKED
|
|---|
| 165 | Case GUICtrlRead($h_Radio_0)
|
|---|
| 166 | Return 0
|
|---|
| 167 | Case GUICtrlRead($h_Radio_1)
|
|---|
| 168 | Return 1
|
|---|
| 169 | Case GUICtrlRead($h_Radio_3)
|
|---|
| 170 | Return 3
|
|---|
| 171 | EndSwitch
|
|---|
| 172 | EndFunc ;==>_Option
|
|---|
| 173 |
|
|---|
| 174 | Func Readini()
|
|---|
| 175 | Local $h_x
|
|---|
| 176 |
|
|---|
| 177 | If FileExists(@ScriptDir & "\StringRegExpGUIPattern.ini") = 0 Then
|
|---|
| 178 | $h_x = FileOpen(@ScriptDir & "\StringRegExpGUIPattern.ini", 1)
|
|---|
| 179 | FileWriteLine($h_x, "[do not delete the file - Patterns are listed below]")
|
|---|
| 180 | FileWriteLine($h_x, "(.*)##~##")
|
|---|
| 181 | FileClose($h_x)
|
|---|
| 182 | Else
|
|---|
| 183 | $s_Pattern = FileRead(@ScriptDir & "\StringRegExpGUIPattern.ini")
|
|---|
| 184 | $s_Pattern = StringTrimLeft($s_Pattern, StringInStr($s_Pattern, @CRLF) + 1)
|
|---|
| 185 | $s_Pattern = StringReplace($s_Pattern, "##~##" & @CRLF, $c_Sep)
|
|---|
| 186 | EndIf
|
|---|
| 187 | EndFunc ;==>Readini
|
|---|
| 188 |
|
|---|
| 189 | Func Pattern_del($h_Pattern)
|
|---|
| 190 | Local $s_ini, $h_x
|
|---|
| 191 |
|
|---|
| 192 | $s_ini = FileRead(@ScriptDir & "\StringRegExpGUIPattern.ini")
|
|---|
| 193 | $h_x = FileOpen(@ScriptDir & "\StringRegExpGUIPattern.ini", 2)
|
|---|
| 194 | If GUICtrlRead($h_Pattern) = "" Then
|
|---|
| 195 | $s_ini = StringReplace($s_ini, "##~##" & @CRLF & "##~##", "##~##")
|
|---|
| 196 | $s_ini = StringReplace($s_ini, @CRLF & @CRLF, @CRLF)
|
|---|
| 197 | Else
|
|---|
| 198 | $s_ini = StringReplace($s_ini, GUICtrlRead($h_Pattern) & "##~##", "")
|
|---|
| 199 | $s_ini = StringReplace($s_ini, @CRLF & @CRLF, @CRLF)
|
|---|
| 200 | EndIf
|
|---|
| 201 | FileWrite($h_x, $s_ini)
|
|---|
| 202 | FileClose($h_x)
|
|---|
| 203 | Readini()
|
|---|
| 204 | GUICtrlSetData($h_Pattern, $c_Sep & $s_Pattern, "(.*)")
|
|---|
| 205 | EndFunc ;==>Pattern_del
|
|---|
| 206 |
|
|---|
| 207 | Func Pattern_Add($h_Pattern)
|
|---|
| 208 | Local $h_x
|
|---|
| 209 |
|
|---|
| 210 | $h_x = FileOpen(@ScriptDir & "\StringRegExpGUIPattern.ini", 1)
|
|---|
| 211 | FileWriteLine($h_x, GUICtrlRead($h_Pattern) & "##~##")
|
|---|
| 212 | FileClose($h_x)
|
|---|
| 213 | Readini()
|
|---|
| 214 | GUICtrlSetData($h_Pattern, "|" & $s_Pattern, GUICtrlRead($h_Pattern))
|
|---|
| 215 | EndFunc ;==>Pattern_Add
|
|---|
| 216 |
|
|---|
| 217 | Func WaitMessage($s_txt = '')
|
|---|
| 218 | If $s_txt = '' Then Return SplashOff()
|
|---|
| 219 | Local $a_pos = WinGetPos($h_Wnd), $i_height, $i_width = 10, $a_Reg
|
|---|
| 220 |
|
|---|
| 221 | $a_Reg = StringRegExp($s_txt, "(.*)", 3)
|
|---|
| 222 | $i_height = UBound($a_Reg) * 13 + 20
|
|---|
| 223 | For $i = 0 To UBound($a_Reg) - 1
|
|---|
| 224 | $i_width = __Max($i_width, StringLen($a_Reg[$i]))
|
|---|
| 225 | Next
|
|---|
| 226 | $i_width = $i_width * 8 + 30
|
|---|
| 227 | SplashTextOn("Please wait", $s_txt, $i_width, $i_height, $a_pos[0] + ($a_pos[2] - $i_width) / 2, $a_pos[1] + ($a_pos[3] - $i_height) / 2, 32)
|
|---|
| 228 | EndFunc ;==>WaitMessage
|
|---|
| 229 |
|
|---|
| 230 | Func __Max($nNum1, $nNum2)
|
|---|
| 231 | If $nNum1 > $nNum2 Then Return $nNum1
|
|---|
| 232 | Return $nNum2
|
|---|
| 233 | EndFunc ;==>__Max
|
|---|
| 234 |
|
|---|
| 235 | Func RegRead64($sKeyname, $sValue)
|
|---|
| 236 | Local $res = RegRead($sKeyname, $sValue)
|
|---|
| 237 | If @error And @AutoItX64 Then
|
|---|
| 238 | $sKeyname = StringReplace($sKeyname, "HKEY_LOCAL_MACHINE", "HKLM")
|
|---|
| 239 | $sKeyname = StringReplace($sKeyname, "HKLM\SOFTWARE\", "HKLM\SOFTWARE\Wow6432Node\")
|
|---|
| 240 | $res = RegRead($sKeyname, $sValue)
|
|---|
| 241 | If @error Then
|
|---|
| 242 | SetError(1)
|
|---|
| 243 | Return ""
|
|---|
| 244 | EndIf
|
|---|
| 245 | EndIf
|
|---|
| 246 |
|
|---|
| 247 | SetError(0)
|
|---|
| 248 | Return $res
|
|---|
| 249 | EndFunc
|
|---|