UnKnOwned Posted May 29, 2013 Share Posted May 29, 2013 Simply put, how do you search a string for Autoit macros using RegEx? Here is where I am at so far. $ret = StringRegExp($sData, '([@]{1,3})(?:\B)') I am reading here http://www.autoitscript.com/autoit3/docs/tutorials/regexp/regexp.htm & http://www.codeproject.com/Articles/9099/The-30-Minute-Regex-Tutorial I do not use if ever regular expressions as I have been misguided but will start using them now. Link to comment Share on other sites More sharing options...
Bert Posted May 29, 2013 Share Posted May 29, 2013 in the helpfile there is a regex script tool of sorts that makes understanding Regex much easier The Vollatran project My blog: http://www.vollysinterestingshit.com/ Link to comment Share on other sites More sharing options...
PhoenixXL Posted May 29, 2013 Share Posted May 29, 2013 (edited) Try expanding the variables - might help. $String = "Hello" $String_ = "$String$, nice meeting you at @scriptdir@" MsgBox(64, "Variables not Expanded", $String_) ;check the help file for how Autoit treats macros and variables upon expanding. Opt("ExpandVarStrings", 1) MsgBox(64, "Variables Expanded", $String_) You have to hard-code all the macros if you want only Autoit - explicit macros. Otherwise any word("w") followed by a "@" would do. Regards Edited May 29, 2013 by PhoenixXL My code: PredictText: Predict Text of an Edit Control Like Scite. Remote Gmail: Execute your Scripts through Gmail. StringRegExp:Share and learn RegExp.Run As System: A command line wrapper around PSEXEC.exe to execute your apps scripts as System (LSA). Database: An easier approach for _SQ_LITE beginners. MathsEx: A UDF for Fractions and LCM, GCF/HCF. FloatingText: An UDF for make your text floating. Clipboard Extendor: A clipboard monitoring tool. Custom ScrollBar: Scroll Bar made with GDI+, user can use bitmaps instead. RestrictEdit_SRE: Restrict text in an Edit Control through a Regular Expression. Link to comment Share on other sites More sharing options...
UnKnOwned Posted May 29, 2013 Author Share Posted May 29, 2013 @PhoenixXL I'm not quite sure I follow in terms of expanding Autoit @macros to their values, and since I seem to be terrible at asking questions, I will just show you what I am trying to accomplish. Read ini file sections set key names to Autoit usable variables set key values to Autoit variable values derived from ini key names. At the moment I am only interested in replacing the macros for their values. Snippet Local $Config_File = '.config.ini' Local $INI_Sections = IniReadSectionNames($Config_File) For $i = 1 to $INI_Sections[0] $S_Name = IniReadSection($Config_File, $INI_Sections[$i]) For $x = 1 To $S_Name[0][0] Assign($S_Name[$x][0], get($S_Name[$x][1], 'INI|val')) Next Next Func get($sData, $stype) Switch $stype Case 'INI|val' $ret = _LitMacs($sData) Return($ret) EndSwitch EndFunc To make this work I use this mess expandcollapse popupFunc _LitMacs($sData) $ret = StringReplace($sData, '@AppDataCommonDir', @AppDataCommonDir) $ret = StringReplace($ret, '@AppDataDir', @AppDataDir) $ret = StringReplace($ret, '@AutoItExe', @AutoItExe) $ret = StringReplace($ret, '@AutoItPID', @AutoItPID) $ret = StringReplace($ret, '@AutoItVersion', @AutoItVersion) $ret = StringReplace($ret, '@AutoItX64', @AutoItX64) ;$ret = StringReplace($ret, '@COM_EventObj', @COM_EventObj) $ret = StringReplace($ret, '@CommonFilesDir', @CommonFilesDir) $ret = StringReplace($ret, '@Compiled', @Compiled) $ret = StringReplace($ret, '@ComputerName', @ComputerName) $ret = StringReplace($ret, '@ComSpec', @ComSpec) $ret = StringReplace($ret, '@CPUArch', @CPUArch) $ret = StringReplace($ret, '@CR', @CR) $ret = StringReplace($ret, '@CRLF', @CRLF) $ret = StringReplace($ret, '@DesktopCommonDir', @DesktopCommonDir) $ret = StringReplace($ret, '@DesktopDir', @DesktopDir) $ret = StringReplace($ret, '@DesktopHeight', @DesktopHeight) $ret = StringReplace($ret, '@DesktopWidth', @DesktopWidth) $ret = StringReplace($ret, '@DesktopDepth', @DesktopDepth) $ret = StringReplace($ret, '@DesktopRefresh', @DesktopRefresh) $ret = StringReplace($ret, '@DocumentsCommonDir', @DocumentsCommonDir) $ret = StringReplace($ret, '@error', @error) ;$ret = StringReplace($ret, '@exitCode', @exitCode) ;$ret = StringReplace($ret, '@exitMethod', @exitMethod) $ret = StringReplace($ret, '@extended', @extended) $ret = StringReplace($ret, '@FavoritesCommonDir', @FavoritesCommonDir) $ret = StringReplace($ret, '@FavoritesDir', @FavoritesDir) ;$ret = StringReplace($ret, '@GUI_CtrlId', @GUI_CtrlId) ;$ret = StringReplace($ret, '@GUI_CtrlHandle', @GUI_CtrlHandle) ;$ret = StringReplace($ret, '@GUI_DragId', @GUI_DragId) ;$ret = StringReplace($ret, '@GUI_DragFile', @GUI_DragFile) ;$ret = StringReplace($ret, '@GUI_DropId', @GUI_DropId) ;$ret = StringReplace($ret, '@GUI_WinHandle', @GUI_WinHandle) $ret = StringReplace($ret, '@HomeDrive', @HomeDrive) $ret = StringReplace($ret, '@HomePath', @HomePath) $ret = StringReplace($ret, '@HomeShare', @HomeShare) $ret = StringReplace($ret, '@HOUR', @HOUR) $ret = StringReplace($ret, '@HotKeyPressed', @HotKeyPressed) $ret = StringReplace($ret, '@IPAddress1', @IPAddress1) $ret = StringReplace($ret, '@IPAddress2', @IPAddress2) $ret = StringReplace($ret, '@IPAddress3', @IPAddress3) $ret = StringReplace($ret, '@IPAddress4', @IPAddress4) $ret = StringReplace($ret, '@KBLayout', @KBLayout) $ret = StringReplace($ret, '@LF', @LF) $ret = StringReplace($ret, '@LogonDNSDomain', @LogonDNSDomain) $ret = StringReplace($ret, '@LogonDomain', @LogonDomain) $ret = StringReplace($ret, '@LogonServer', @LogonServer) $ret = StringReplace($ret, '@MDAY', @MDAY) $ret = StringReplace($ret, '@MIN', @MIN) $ret = StringReplace($ret, '@MON', @MON) $ret = StringReplace($ret, '@MSEC', @MSEC) $ret = StringReplace($ret, '@MUILang', @MUILang) $ret = StringReplace($ret, '@MyDocumentsDir', @MyDocumentsDir) $ret = StringReplace($ret, '@NumParams', @NumParams) $ret = StringReplace($ret, '@OSArch', @OSArch) $ret = StringReplace($ret, '@OSBuild', @OSBuild) $ret = StringReplace($ret, '@OSLang', @OSLang) $ret = StringReplace($ret, '@OSServicePack', @OSServicePack) $ret = StringReplace($ret, '@OSType', @OSType) $ret = StringReplace($ret, '@OSVersion', @OSVersion) $ret = StringReplace($ret, '@ProgramFilesDir', @ProgramFilesDir) $ret = StringReplace($ret, '@ProgramsCommonDir', @ProgramsCommonDir) $ret = StringReplace($ret, '@ProgramsDir', @ProgramsDir) $ret = StringReplace($ret, '@ScriptDir', @ScriptDir) $ret = StringReplace($ret, '@ScriptFullPath', @ScriptFullPath) $ret = StringReplace($ret, '@ScriptLineNumber', @ScriptLineNumber) $ret = StringReplace($ret, '@ScriptName', @ScriptName) $ret = StringReplace($ret, '@SEC', @SEC) $ret = StringReplace($ret, '@StartMenuCommonDir', @StartMenuCommonDir) $ret = StringReplace($ret, '@StartMenuDir', @StartMenuDir) $ret = StringReplace($ret, '@StartupCommonDir', @StartupCommonDir) $ret = StringReplace($ret, '@StartupDir', @StartupDir) $ret = StringReplace($ret, '@SW_DISABLE', @SW_DISABLE) $ret = StringReplace($ret, '@SW_ENABLE', @SW_ENABLE) $ret = StringReplace($ret, '@SW_HIDE', @SW_HIDE) $ret = StringReplace($ret, '@SW_LOCK', @SW_LOCK) $ret = StringReplace($ret, '@SW_MAXIMIZE', @SW_MAXIMIZE) $ret = StringReplace($ret, '@SW_MINIMIZE', @SW_MINIMIZE) $ret = StringReplace($ret, '@SW_RESTORE', @SW_RESTORE) $ret = StringReplace($ret, '@SW_SHOW', @SW_SHOW) $ret = StringReplace($ret, '@SW_SHOWDEFAULT', @SW_SHOWDEFAULT) $ret = StringReplace($ret, '@SW_SHOWMAXIMIZED', @SW_SHOWMAXIMIZED) $ret = StringReplace($ret, '@SW_SHOWMINIMIZED', @SW_SHOWMINIMIZED) $ret = StringReplace($ret, '@SW_SHOWMINNOACTIVE', @SW_SHOWMINNOACTIVE) $ret = StringReplace($ret, '@SW_SHOWNA', @SW_SHOWNA) $ret = StringReplace($ret, '@SW_SHOWNOACTIVATE', @SW_SHOWNOACTIVATE) $ret = StringReplace($ret, '@SW_SHOWNORMAL', @SW_SHOWNORMAL) $ret = StringReplace($ret, '@SW_UNLOCK', @SW_UNLOCK) $ret = StringReplace($ret, '@SystemDir', @SystemDir) $ret = StringReplace($ret, '@TAB', @TAB) $ret = StringReplace($ret, '@TempDir', @TempDir) ;$ret = StringReplace($ret, '@TRAY_ID', @TRAY_ID) $ret = StringReplace($ret, '@TrayIconFlashing', @TrayIconFlashing) $ret = StringReplace($ret, '@TrayIconVisible', @TrayIconVisible) $ret = StringReplace($ret, '@UserProfileDir', @UserProfileDir) $ret = StringReplace($ret, '@UserName', @UserName) $ret = StringReplace($ret, '@WDAY', @WDAY) $ret = StringReplace($ret, '@WindowsDir', @WindowsDir) $ret = StringReplace($ret, '@WorkingDir', @WorkingDir) $ret = StringReplace($ret, '@YDAY', @YDAY) $ret = StringReplace($ret, '@YEAR', @YEAR) Return($ret) EndFunc Thank you in advance. Link to comment Share on other sites More sharing options...
PhoenixXL Posted May 29, 2013 Share Posted May 29, 2013 (edited) Here is the simplest solution $String_ = Execute("@scriptdir") MsgBox(64, "Variable", $String_) Your script Local $Config_File = '.config.ini' Local $INI_Sections = IniReadSectionNames($Config_File) For $i = 1 To $INI_Sections[0] $S_Name = IniReadSection($Config_File, $INI_Sections[$i]) For $x = 1 To $S_Name[0][0] Assign($S_Name[$x][0], get($S_Name[$x][1])) Next Next Func get($sData) Return Execute($sData) EndFunc ;==>get P.S. I don't know how your INI file is containing the data. The script would work only if $S_Name[$x][1] is only a Macro Otherwise please post the format of how the data is stored in your INI. Regards Edited May 29, 2013 by PhoenixXL My code: PredictText: Predict Text of an Edit Control Like Scite. Remote Gmail: Execute your Scripts through Gmail. StringRegExp:Share and learn RegExp.Run As System: A command line wrapper around PSEXEC.exe to execute your apps scripts as System (LSA). Database: An easier approach for _SQ_LITE beginners. MathsEx: A UDF for Fractions and LCM, GCF/HCF. FloatingText: An UDF for make your text floating. Clipboard Extendor: A clipboard monitoring tool. Custom ScrollBar: Scroll Bar made with GDI+, user can use bitmaps instead. RestrictEdit_SRE: Restrict text in an Edit Control through a Regular Expression. Link to comment Share on other sites More sharing options...
UnKnOwned Posted May 29, 2013 Author Share Posted May 29, 2013 (edited) @PhoenixXL ini contains strings where the macro is not the first or only param, and could be surrounded by other strings hence the question about re. [section] key=Time today is @hour:@min:@sec P.S. Good stuff here, personal thanks for keeping notes like this. @YogiBear I also wanted to add some thanks for the direction as well. After some research of the regex tool included in the help file I was led here Regular expressions do not seem so bad it is like learning dos for %x () //%*#&@^^ crap all over again except with a much more powerful result. Edited May 29, 2013 by UnKnOwned Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now