
  PreExpand V1.4.0.0

-----------------------------

Website: http://softwarespot.wordpress.com/code/preexpand/
Language: English

  Description
-----------------------------
PreExpand expands constant and enum variables in an AutoIt script. The reluctance users have to using constant or enum variables, is because you're using additional variables, sometimes Global. Though in all honesty using constants is a preferred approach for most programmers, as it provides easier to read code and means to debug quicker. It's also a way of eliminating magic numbers.


  Commandline arguments
-----------------------------
A filepath can be passed to the executable e.g. PreExpand.exe "C:\SomeFolder\Au3Script.au3" and with the optional parameter /ms or /mergescript, if you wish to merge the script.
By default the main script is only expanded and not the includes. The merging is done by Au3Stripper, if available.

If you execute the application without any commandline parameters, it will ask which file you wish to expand and whether or not you would like to merge into one file.


  License
-----------------------------
PreExpand is released as freeware.


  ChangeLog
-----------------------------
Version 1.4.0.0 [11-07-2014]
- ADDED: @GUI_CtrlHandle, @GUI_DragId, @GUI_DragFile, @GUI_DropId, @GUI_WinHandle, @ScriptLineNumber to the macro exclusion list. (Thanks wraithdu)
- ADDED: Additional information to the log file.
- ADDED: Commandline parameter /ms or /mergescript.
- ADDED: Concatenating adjoining strings e.g. "An example is " & " like this.".
- ADDED: Expanding all files or just the main Au3 script.
- ADDED: Expanding valid AutoIt expressions inside the following functions: Abs(), ACos(), ASin(), ATan(), Asc(), AscW(), BinaryLen(), Cos(), Sin(), Tan(), BitAND(), BitNOT(), BitOR(), BitRotate(), BitShift(), BitXOR(), Ceiling(), Dec(), Exp(), Floor(), Hex(), Int(), Log(), Mod(), Number(), Ptr(), Round(), Sqrt() and StringLen(). (Experimental)
- ADDED: Iterates through the script multiple times until all possible constants and enumerations have been expanded.
- ADDED: Logging for expanding DllCall() functions.
- ADDED: Macros @HOUR, @MDAY, @MIN, @MON, @MSEC, @SEC, @WDAY, @YDAY and @YEAR to the exclusion list.
- ADDED: Parsing DllCall's 'dll' parameter to create an open handle that can be used across the script. This handle is closed on exit of the script.
- ADDED: Parsing valid macros as global variables. This results in a quicker execution time.
- ADDED: Renaming functions.
- ADDED: Renaming variables.
- ADDED: Using Au3Stripper to reduce the size of the file before expanding. Au3Stripper parameters inside the script are not honoured, but instead only /SO is passed to Au3Stripper.
- FIXED: ACK was not removed during the reporting phase.
- FIXED: Case-insensitive from stripping variables.
- FIXED: Clarity of changelog entries.
- FIXED: Creating random function and variable name.
- FIXED: Display message if Au3Stripper is not found.
- FIXED: Documentation of using commandline parameters. (Thanks wraithdu)
- FIXED: Enumerations that began with -1 or less were not properly enumerated.
- FIXED: Expanding @error or @extended has now been removed.
- FIXED: Expanding inside functions was temporarily disabled for debugging purposes.
- FIXED: Expanding of the @SEC macro.
- FIXED: If there were no DllCalls used in the script a temporary function would still be added.
- FIXED: Incorrectly stripping include lines that contained .a3x.
- FIXED: Issue with stripping #forceref and integral value.
- FIXED: Merged script was pasted to the clipboard for debugging purposes.
- FIXED: Regression with parsing DllCalls.
- FIXED: Regression with stripping valid directives.
- FIXED: Step not being evaluated within enumerations.
- FIXED: Step not being stripped from enumerations that were expanded.
- FIXED: Stripping empty enumeration lines e.g. "Enum Step * 2" from the source code.
- FIXED: Stripping empty EOLs at the end of the script.
- FIXED: Tray icon displaying.
- IMPROVED: Logging descriptions.
- IMPROVED: Approach to generating unique function and variable names.
- IMPROVED: Compiled with AutoIt v3.3.14.0.
- IMPROVED: Detecting the location of the SciTE directory.
- IMPROVED: EOL character parsing. It can either be \r, \n or \r\n in a script.
- IMPROVED: Expanding enumerations code is a lot simpler in execution and easy to manage for future versions of PreExpand.
- IMPROVED: Internal error checking.
- IMPROVED: Internal processing of the script file.
- IMPROVED: Now the PreExpand source code is run through PreExpand beforehand.
- IMPROVED: Regular expressions for parsing constants and enumerations.
- IMPROVED: Speed of writing the log file.
- IMPROVED: Variable naming for DllCall().
- IMPROVED: Various source code changes for improved readability for future bug fixing.
- IMPROVED: Writing data to the log file.

Version 1.3.17.41 (beta) [10-07-2014]
- See changelog for v1.4.0.0.

Version 1.2.2.5 [25-12-2013]
- ADDED: All includes are merged into a single script (similar to Obfuscator's /MO parameter) so all constants and enumerations can be expanded.
- FIXED: Crashing on large files. Thanks DXRW4E.
- FIXED: Various bug fixes that were undocumented.
- FIXED: Various fixes to the internal workings of PreExpand.

Version 1.1.0.2 [22-12-2013]
- FIXED: Functions not being stripped correctly.
- FIXED: Last variable of an enumeration not being correctly expanded.

Version 1.0.0.0 [29-06-2013]
- Initial release.

-----------------------------