#include opt("RunErrorsFatal", 0) Dim $initialDir = "C:\" Global $s_Pattern = "(.*)" Readini() GUICreate("StringRegExp Original Design GUI -by w0uter, modified Steve8tch", 550, 570, (@DesktopWidth - 550) / 2, (@DesktopHeight - 570) / 2) GUICtrlCreateGroup("The pattern - $ptn", 10, 210, 530, 60) GUICtrlCreateGroup("Output", 140, 280, 400, 280) GUICtrlCreateGroup("Return", 10, 280, 120, 100) GUICtrlCreateGroup("@Error @Extended", 10, 390, 120, 50) GUICtrlCreateGroup("Help", 10, 450, 120, 50) $h_Radio_0 = GUICtrlCreateRadio("True/False", 20, 300, 100, 20) $h_Radio_1 = GUICtrlCreateRadio("Array with the text", 20, 321, 100, 27) $h_Radio_3 = GUICtrlCreateRadio("Array of all results", 20, 350, 100, 20) GUICtrlSetState($h_Radio_3, $GUI_CHECKED) $h_Indummy = GUICtrlCreateEdit("", 1020, 1040, 510, 150, BitOR($ES_WANTRETURN, $WS_VSCROLL, $WS_HSCROLL, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL)) $h_tab = GUICtrlCreateTab(10, 10, 530, 190) $h_tabitem1 = GUICtrlCreateTabItem("Copy and Paste the text to check - $str") $h_In1 = GUICtrlCreateEdit("", 20, 40, 510, 150, BitOR($ES_WANTRETURN, $WS_VSCROLL, $WS_HSCROLL, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL)) $h_tabitem2 = GUICtrlCreateTabItem("Load text from File") $h_Brwse = GUICtrlCreateButton("Browse for file", 20, 40, 100, 20) $h_fileIn = GUICtrlCreateEdit("", 130, 40, 400, 20, BitOR($ES_WANTRETURN, $WS_HSCROLL, $ES_AUTOHSCROLL)) $h_In2 = GUICtrlCreateEdit("", 20, 70, 510, 120, BitOR($ES_WANTRETURN, $WS_VSCROLL, $WS_HSCROLL, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL)) GUICtrlCreateTabItem(""); $h_Out = GUICtrlCreateEdit("", 150, 296, 380, 262, BitOR($ES_WANTRETURN, $WS_VSCROLL, $WS_HSCROLL, $ES_AUTOVSCROLL, $ES_AUTOHSCROLL)) $h_Pattern = GUICtrlCreateCombo("", 70, 230, 430, 30) GUICtrlSetFont($h_Pattern, 14) GUICtrlSetData($h_Pattern, $s_Pattern, "(.*)") $h_Pattern_add = GUICtrlCreateButton("Add", 504, 225, 30, 18) $h_Pattern_del = GUICtrlCreateButton("Del", 504, 245, 30, 18) $h_test = GUICtrlCreateButton("Test", 20, 235, 40, 20) $h_Err = GUICtrlCreateInput("", 20, 410, 40, 20, $ES_READONLY) $h_Ext = GUICtrlCreateInput("", 70, 410, 50, 20, $ES_READONLY) $h_Help = GUICtrlCreateButton("StringRegExp HELP", 20, 468, 100, 24) $h_Exit = GUICtrlCreateButton("Exit", 10, 510, 120, 50) $v_Reg_Old = 0 Global $h_In = $h_In1 GUISetState() While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE Exit Case $msg = $h_test _Valid() Case $msg = $h_Exit Exit Case $msg = $h_Brwse $filepath = FileOpenDialog("Select text file to test", $initialDir, "Text files (*.*)", 1) $initialDir = StringTrimRight($filepath, StringInStr($filepath, "\", "-1")) GUICtrlSetData($h_fileIn, $filepath) WaitMessage("Loading file..") $str2 = FileRead($filepath) WaitMessage("File loaded.." & @CRLF & "updating display") GUICtrlSetData($h_In2, $str2) WaitMessageOff() Case $msg = $h_tab If GUICtrlRead($h_tab) = 0 Then $h_In = $h_In1 Else $h_In = $h_In2 EndIf Case $msg = $h_Pattern_add Pattern_Add() Case $msg = $h_Pattern_del Pattern_del() Case $msg = $h_Help $helppath = StringLeft(@AutoItExe, StringInStr(@AutoItExe, "\", 0, -1)) Run($helppath & "Autoit3Help.exe StringRegExp") If @error = 1 Then MsgBox(0, "error", "Cannot fing help file - sorry") Case Else ;; EndSelect WEnd Func _Valid() WaitMessage("Performing test..") $v_Reg = StringRegExp(GUICtrlRead($h_In), GUICtrlRead($h_Pattern), _Option()) WaitMessage("Test complete.." & @CRLF & "updating display") Dim $v_EE[2] = [@error, @extended] If $v_EE[0] = 2 Then GUICtrlSetColor($h_Pattern, 0xFF0000) GUICtrlSetData($h_Err, $v_EE[0]) GUICtrlSetData($h_Out, "") Else GUICtrlSetColor($h_Pattern, 0) GUICtrlSetData($h_Err, $v_EE[0]) EndIf GUICtrlSetData($h_Ext, $v_EE[1]) If $v_EE[0] <> 2 Then $v_Check = 0 If UBound($v_Reg) <> UBound($v_Reg_Old) Then $v_Check = 1 Else For $i = 0 To UBound($v_Reg) - 1 If $v_Reg[$i] <> $v_Reg_Old[$i] Then $v_Check = 1 Next EndIf If $v_Check = 1 Then GUICtrlSetData($h_Out, "") $h_output = "" $x = UBound($v_Reg) If $x < 10 Then $s_lgth = 1 ElseIf $x < 100 Then $s_lgth = 2 ElseIf $x < 1000 Then $s_lgth = 3 ElseIf $x < 10000 Then $s_lgth = 4 ElseIf $x < 10000 Then $s_lgth = 5 Else $s_lgth = 6 EndIf If UBound($v_Reg) Then For $i = 0 To UBound($v_Reg) - 1 $h_output &= StringFormat("%0" & $s_lgth & "i", $i) & ' => ' & $v_Reg[$i] & @CRLF Next GUICtrlSetData($h_Out, $h_output) Else GUICtrlSetData($h_Out, $v_Reg) EndIf EndIf EndIf WaitMessageOff() $v_Reg_Old = $v_Reg StringRegExp('', Random(0x80000000, 0x7FFFFFFF), 1) EndFunc ;==>_Valid Func _Option() Switch $GUI_CHECKED Case GUICtrlRead($h_Radio_0) Return 0 Case GUICtrlRead($h_Radio_1) Return 1 Case GUICtrlRead($h_Radio_3) Return 3 EndSwitch EndFunc ;==>_Option Func Readini() If FileExists(@ScriptDir & "\StringRegExpGUIPattern.ini") = 0 Then $h_x = FileOpen(@ScriptDir & "\StringRegExpGUIPattern.ini", 1) FileWriteLine($h_x, "[do not delete the file - Patterns are listed below]") FileWriteLine($h_x, "(.*)##~##") FileClose($h_x) Else $s_Pattern = FileRead(@ScriptDir & "\StringRegExpGUIPattern.ini") $s_Pattern = StringTrimLeft($s_Pattern, StringInStr($s_Pattern, @CRLF) + 1) $s_Pattern = StringReplace($s_Pattern, "##~##" & @CRLF, "|") EndIf EndFunc ;==>Readini Func Pattern_del() $s_ini = FileRead(@ScriptDir & "\StringRegExpGUIPattern.ini") $h_x = FileOpen(@ScriptDir & "\StringRegExpGUIPattern.ini", 2) If GUICtrlRead($h_Pattern) = "" Then $s_ini = StringReplace($s_ini, "##~##" & @CRLF & "##~##", "##~##") $s_ini = StringReplace($s_ini, @CRLF & @CRLF, @CRLF) Else $s_ini = StringReplace($s_ini, GUICtrlRead($h_Pattern) & "##~##", "") $s_ini = StringReplace($s_ini, @CRLF & @CRLF, @CRLF) EndIf FileWrite($h_x, $s_ini) FileClose($h_x) Readini() GUICtrlSetData($h_Pattern, "|" & $s_Pattern, "(.*)") EndFunc ;==>Pattern_del Func Pattern_Add() $h_x = FileOpen(@ScriptDir & "\StringRegExpGUIPattern.ini", 1) FileWriteLine($h_x, GUICtrlRead($h_Pattern) & "##~##") FileClose($h_x) Readini() GUICtrlSetData($h_Pattern, "|" & $s_Pattern, GUICtrlRead($h_Pattern)) EndFunc ;==>Pattern_Add Func WaitMessage($s_txt) $a_pos = WinGetPos("StringRegExp Original Design GUI -by w0uter, modified Steve8tch") SplashTextOn("Please wait", $s_txt, 120, 40, $a_pos[0] + 215, $a_pos[1] + 200) EndFunc ;==>WaitMessage Func WaitMessageOff() SplashOff() EndFunc ;==>WaitMessageOff