TheDcoder Posted July 9, 2015 Posted July 9, 2015 (edited) Hello everyone , I am currently having some problems with this cut out from my latest project:The project is called Magic Number Calculator, Spoiler Alert!expandcollapse popup#include <Array.au3> #include <Debug.au3> Global Const $eAutoItIncludesFolder = @ProgramFilesDir & "\AutoIt3\Include" Global Const $eAVIConstantsFile = $eAutoItIncludesFolder & "\AVIConstants.au3" Global Const $eButtonConstantsFile = $eAutoItIncludesFolder & "\ButtonConstants.au3" Global Const $eComboConstantsFile = $eAutoItIncludesFolder & "\ComboConstants.au3" Global Const $eDateTimeConstants = $eAutoItIncludesFolder & "\DateTimeConstants.au3" Global Const $eEditConstantsFile = $eAutoItIncludesFolder & "\EditConstants.au3" Global Const $eGUIConstantsExFile = $eAutoItIncludesFolder & "\GUIConstantsEx.au3" Global Const $eListboxConstantsFile = $eAutoItIncludesFolder & "\ListboxConstants.au3" Global Const $eListViewConstantsFile = $eAutoItIncludesFolder & "\ListViewConstants.au3" Global Const $eWindowsConstantsFile = $eAutoItIncludesFolder & "\WindowsConstants.au3" ; Debug _DebugSetup() $aArray = LoadConstants($eAVIConstantsFile & '|' & $eButtonConstantsFile & '|' & $eComboConstantsFile & '|' & $eDateTimeConstants & '|' & $eEditConstantsFile & '|' & $eGUIConstantsExFile & '|' & $eListboxConstantsFile & '|' & $eListViewConstantsFile & '|' & $eWindowsConstantsFile) _DebugOut("Returned") _ArrayDisplay($aArray) Func LoadConstants($sFile) $aFiles = StringSplit($sFile, '|') ; Load the list of files to load _DebugOut("Loaded list of files") Local $aReturn = LoadConstants($aFiles[1]) ; Load the first file _DebugOut("Loaded the first file") For $i = 2 To $aFiles[0] ; Load remaining files $aTempArray = ConstantFileTo2DArray($aFiles[$i]) ; Store the contants to concatenate _DebugOut("Loaded " & $i & " Files") _ArrayConcatenate($aReturn, $aTempArray) _DebugOut("Concatenated") Next _DebugOut("Returning") Return $aReturn ; Return the Array EndFunc ;==>LoadConstants Func ConstantFileTo2DArray($sFile) $aFile = FileReadToArray($sFile) Local $sLinesToBeDeleted = "0;" ; Remove line.no 1 because it always contains #include-once For $i = 0 To UBound($aFile) - 1 If StringLeft($aFile[$i], 1) = ';' Or $aFile[$i] = "" Then $sLinesToBeDeleted &= $i & ';' ; Detect if the present line is a comment or empty ;) Next $sLinesToBeDeleted = StringTrimRight($sLinesToBeDeleted, 1) ; Trim the last semi-colon _ArrayDelete($aFile, $sLinesToBeDeleted) ; Delete empty lines For $i = 0 To UBound($aFile) - 1 $aFile[$i] = StringStripWS($aFile[$i], $STR_STRIPALL) ; Remove any Space, CR, LF etc. chars from the string (Refer to StringStipWS's documentation for more info) $aFile[$i] = StringTrimLeftUntil('$', $aFile[$i], 1, False) ; Remove any Global Const before the variable If Not StringInStr($aFile[$i], ';') = 0 Then $aFile[$i] = StringTrimRightUntil(';', $aFile[$i]) ; Remove any comments (For example, like this comment trailing after the function :P) Next Local $aReturn[UBound($aFile)][2] $sLinesToBeDeleted = "" For $i = 0 To UBound($aFile) - 1 $aTempArray = StringSplit($aFile[$i], '=', $STR_NOCOUNT) ; Split the Variable & Value $aTempArray[0] = StringTrimLeft($aTempArray[0], 1) ; Trim the dollar sign Assign($aTempArray[0], $aTempArray[1], 1) ; Assign the constants as variables (forced in local scope) for solving them using execute() $aTempArray[1] = Execute($aTempArray[1]) Assign($aTempArray[0], $aTempArray[1], 1) ; Assign the calculated value again $aReturn[$i][0] = '$' & $aTempArray[0] $aReturn[$i][1] = $aTempArray[1] If Not IsInt($aTempArray[1]) Then $sLinesToBeDeleted &= $i & ';' ; Delete constants which are not intergers Next _ArrayDelete($aReturn, StringTrimRight($sLinesToBeDeleted, 1)) ; Delete constants which are not intergers Return $aReturn EndFunc ;==>ConstantFileTo2DArray Func StringTrimLeftUntil($sDelimiter, $sString, $iOccurrence = 1, $bTrimDelimiter = True) $iDelimiterLen = StringLen($sDelimiter) $sString = StringTrimLeft($sString, StringInStr($sString, $sDelimiter, 2, $iOccurrence) + ($iDelimiterLen - 1)) If $bTrimDelimiter = False Then $sString = $sDelimiter & $sString Return $sString EndFunc ;==>StringTrimLeftUntil Func StringTrimRightUntil($sDelimiter, $sString, $iOccurrence = 1, $bTrimDelimiter = True) $iStringLen = StringLen($sString) $iDelimiterLen = StringLen($sDelimiter) $iOccurrence -= $iOccurrence * 2 $sString = StringTrimRight($sString, ($iStringLen - StringInStr($sString, $sDelimiter, 2, $iOccurrence)) - ($iDelimiterLen - 1) + $iDelimiterLen) If $bTrimDelimiter = False Then $sString &= $sDelimiter Return $sString EndFunc ;==>StringTrimRightUntil The code looks good, but if you run it AutoIt crashes ... Any tips or suggestion to make it work again ?Here is the error image: http://img4.imagetitan.com/img.php?image=11_capture2866.pngSciTE Output (Exit code is not constant):>"C:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "C:\Users\TheDcoder\Desktop\New AutoIt v3 Script.au3" /UserParams +>15:31:59 Starting AutoIt3Wrapper v.14.801.2025.0 SciTE v.3.4.4.0 Keyboard:00004009 OS:WIN_81/ CPU:X64 OS:X64 Environment(Language:0809) +> SciTEDir => C:\Program Files (x86)\AutoIt3\SciTE UserDir => C:\Users\TheDcoder\AppData\Local\AutoIt v3\SciTE\AutoIt3Wrapper SCITE_USERHOME => C:\Users\TheDcoder\AppData\Local\AutoIt v3\SciTE >Running AU3Check (3.3.12.0) from:C:\Program Files (x86)\AutoIt3 input:C:\Users\TheDcoder\Desktop\New AutoIt v3 Script.au3 +>15:31:59 AU3Check ended.rc:0 >Running:(3.3.12.0):C:\Program Files (x86)\AutoIt3\autoit3.exe "C:\Users\TheDcoder\Desktop\New AutoIt v3 Script.au3" --> Press Ctrl+Alt+Break to Restart or Ctrl+Break to Stop !>15:32:10 AutoIt3.exe ended.rc:-1073740771 +>15:32:10 AutoIt3Wrapper Finished. >Exit code: 3221226525 Time: 12.07Thanks in Advance, TD Edited July 9, 2015 by TheDcoder code correction EasyCodeIt - A cross-platform AutoIt implementation - Fund the development! (GitHub will double your donations for a limited time) DcodingTheWeb Forum - Follow for updates and Join for discussion
water Posted July 9, 2015 Posted July 9, 2015 (edited) Yes: Please provide the error message you get so we know what the problem "exactly" is. Edited July 9, 2015 by water My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
TheDcoder Posted July 9, 2015 Author Posted July 9, 2015 @water Added debug details P.S Is that code working for you? EasyCodeIt - A cross-platform AutoIt implementation - Fund the development! (GitHub will double your donations for a limited time) DcodingTheWeb Forum - Follow for updates and Join for discussion
water Posted July 9, 2015 Posted July 9, 2015 P.S Is that code working for you?No. On Windows 7 I get "Loaded list of files" in the debug window over and over again until the script crashes.After a quick glance at your code I think you are passing the wrong parameter.Func LoadConstants($sFile) $aFiles = StringSplit($sFile, '|') ; Load the list of files to load _DebugOut("Loaded list of files") Local $aReturn = LoadConstants($sFile) ; Load the first fileshould beFunc LoadConstants($sFile) $aFiles = StringSplit($sFile, '|') ; Load the list of files to load _DebugOut("Loaded list of files") Local $aReturn = LoadConstants($aFiles[1]) ; Load the first file My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
TheDcoder Posted July 9, 2015 Author Posted July 9, 2015 @water Fixed it... But It didn't solve the problem EasyCodeIt - A cross-platform AutoIt implementation - Fund the development! (GitHub will double your donations for a limited time) DcodingTheWeb Forum - Follow for updates and Join for discussion
water Posted July 9, 2015 Posted July 9, 2015 What do you now get in the debug window? My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
TheDcoder Posted July 9, 2015 Author Posted July 9, 2015 @water Same repetition of "Loaded list of files" EasyCodeIt - A cross-platform AutoIt implementation - Fund the development! (GitHub will double your donations for a limited time) DcodingTheWeb Forum - Follow for updates and Join for discussion
water Posted July 9, 2015 Posted July 9, 2015 Why do you recursively call LoadConstants?Right now you call LoadConstants until the universe falls apart. You need to define a condition when to exit the recursion. My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
TheDcoder Posted July 9, 2015 Author Posted July 9, 2015 Right now you call LoadConstants until the universe falls apart.On which line ? EasyCodeIt - A cross-platform AutoIt implementation - Fund the development! (GitHub will double your donations for a limited time) DcodingTheWeb Forum - Follow for updates and Join for discussion
water Posted July 9, 2015 Posted July 9, 2015 In function LoadConstants you call LoadConstants you call LoadConstants you call LoadConstants you call LoadConstants you call LoadConstants you call LoadConstants ... My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
TheDcoder Posted July 9, 2015 Author Posted July 9, 2015 @water Thanks! I used LoadConstants instead of ConvertConstantsTo2DArray TD EasyCodeIt - A cross-platform AutoIt implementation - Fund the development! (GitHub will double your donations for a limited time) DcodingTheWeb Forum - Follow for updates and Join for discussion
Popular Post mikell Posted July 9, 2015 Popular Post Posted July 9, 2015 ( <> ) ? : TheDcoder, UEZ, JLogan3o13 and 5 others 8
water Posted July 9, 2015 Posted July 9, 2015 Creative use of the ternary operator My UDFs and Tutorials: Spoiler UDFs: Active Directory (NEW 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
Administrators Jon Posted July 9, 2015 Administrators Posted July 9, 2015 I hope that emoticon ternary survives future forum upgrades.
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