Docfxit Posted October 15, 2008 Posted October 15, 2008 Could someone please help me figure out what is wrong with this script? Errors I am getting: C:\Dnload\9xAddons\Autoit V3 Script\QuickBooks transactions.au3(225,68) : WARNING: $SS_SUNKEN: possibly used before declaration. $Status = GUICtrlCreateLabel("", 30, 120, 200, 20, BitOR($SS_SUNKEN, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Dnload\9xAddons\Autoit V3 Script\QuickBooks transactions.au3(225,80) : WARNING: $SS_CENTER: possibly used before declaration. $Status = GUICtrlCreateLabel("", 30, 120, 200, 20, BitOR($SS_SUNKEN, $SS_CENTER) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Dnload\9xAddons\Autoit V3 Script\QuickBooks transactions.au3(226,98) : WARNING: $BS_MULTILINE: possibly used before declaration. $Btn_GET = GUICtrlCreateButton("Highlight Vendor Press to select", 100, 65, 90, 40, $BS_MULTILINE) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Dnload\9xAddons\Autoit V3 Script\QuickBooks transactions.au3(225,68) : ERROR: $SS_SUNKEN: undeclared global variable. $Status = GUICtrlCreateLabel("", 30, 120, 200, 20, BitOR($SS_SUNKEN, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Dnload\9xAddons\Autoit V3 Script\QuickBooks transactions.au3(28,84) : ERROR: _GUICtrlListSelectedIndex(): undefined function. $FileSelected = _GUICtrlListGetText($listbox, _GUICtrlListSelectedIndex($listbox) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Dnload\9xAddons\Autoit V3 Script\QuickBooks transactions.au3(28,85) : ERROR: _GUICtrlListGetText(): undefined function. $FileSelected = _GUICtrlListGetText($listbox, _GUICtrlListSelectedIndex($listbox)) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Dnload\9xAddons\Autoit V3 Script\QuickBooks transactions.au3(237,49) : ERROR: _GUICtrlEditGetSel(): undefined function. $a_Sel = _GUICtrlEditGetSel ($myedit) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Dnload\9xAddons\Autoit V3 Script\QuickBooks transactions.au3 - 4 error(s), 3 warning(s) This is my code: expandcollapse popup#include <file.au3> #include <array.au3> #include <GUIConstants.au3> #include <GUIListbox.au3> #include <GuiEdit.au3> AutoItSetOption("TrayIconDebug", 1) ;0-off ; Set so that tray displays current line number HotKeySet("{ESC}", "Set_Exit") Dim $hQBOffSetEntries, $hQBTrans, $hQBTransOut, $Dates, $sString, $NumberOfLines Dim $fResult = 1, $msg, $AccountSelected, $listbox, $label ; Select a file from a list of files ; GUICreate("File List", 220, 370) GUISetFont(9, 400, -1, "MS Sans Serif") $listbox = GUICtrlCreateList("", 10, 10, 200, 330) Get_Files() GUISetState() While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE Exit Case $msg = $listbox $FileSelected = _GUICtrlListGetText($listbox, _GUICtrlListSelectedIndex($listbox)) If ($FileSelected == $LB_ERR) Then MsgBox(16, "Error", "Unknown error from _GUICtrlListGetText") Else MsgBox(4096, "Test", "File Selected - " & $FileSelected) ExitLoop EndIf EndSelect WEnd Func Get_Files() $FileList = _FileListToArray("C:\Program Files\QuickBooks Pro 2004", "*.iif", 1) ; list files to an array. If (Not IsArray($FileList)) Or (@error = 1) Then MsgBox(262208, "Folder Error", "No Files\Folders Found. ", 5) Return EndIf GUICtrlSetData($listbox, "") ; set list to empty. For $x = 1 To $FileList[0] ; for loop to place the files in the list. ; GUICtrlSetData($listbox, (StringTrimRight($FileList[$x], 4)) & "|", 1) ; string trim the last 4 characters ( .iif ) GUICtrlSetData($listbox, $FileList[$x] & "|", 1) ; string trim the last 4 characters ( .iif ) Next EndFunc ;==>Get_Files Global $QBTrans = "C:\Program Files\QuickBooks 2008\" & $FileSelected Global $QBTransOut = "C:\Program Files\QuickBooks 2008\TestOut.iif" Global $QBOffSetEntries = "C:\Program Files\QuickBooks 2008\OffSettingEntries.txt" $sPattern = '([^",]*|"(?:[^"]|"")*")(?:,|\Z)' _NFileCountLines ($QBOffSetEntries) Global $Vendor[$NumberOfLines], $Account[$NumberOfLines] OpenFiles () ; MsgBox(64, "Info", "Number of Dimensions: " & _NumDim($Vendor)) ; Func _NumDim(ByRef $avArray) ; For $iCC = 64 To 1 Step -1 ; If UBound($avArray, $iCC) Then Return $iCC ; Next ; Return SetError(1, 0, 0) ; EndFunc ReadOffSetEntries() While $fResult = 1 $asFields = 1 ; Used for WriteRecords ReadRecord() WEnd Set_Exit () ;AutoIt_Debugger_Command:Disable_Debug Func ReadOffSetEntries() ; Load the Vendor and Account arrays ; MsgBox(4096, "$NumberOfLines", $NumberOfLines) For $x = 0 To UBound($Vendor) - 1 Global $sString = FileReadLine($hQBOffSetEntries) If $sString = "" Then ExitLoop $asFields = StringRegExp($sString, $sPattern, 3) ; _ArrayDisplay($asFields, "$asFields") $Vendor[$x] = $asFields[0] ; MsgBox(0, "ReadOffSetEntries", '$sString - ' & $sString & @LF & "Vendor - " & $Vendor[$x] & @lf & "$x - " & $x & @LF & "NumberOfLines - " & $NumberOfLines) $Account[$x] = $asFields[1] ; _ArrayDisplay($Vendor, "Vendor") Next ; for $i = 0 to UBound($asFields) - 1 ; msgbox(4096, "Array Number -------", $i & " - " & $asFields[$i] & @LF & "InputString - " & $sString & @LF & UBound($asFields)) ; Next ; msgbox(4096, "Contents 2", "$asFields - " & $asFields & @LF & "@error - " & @error) ; _ArrayDisplay($Vendor, "Vendor") ; _ArrayDisplay($Account, "Accounts") FileClose($QBOffSetEntries) If Not FileExists($QBOffSetEntries) Then MsgBox(0, "Error", "File doesn't exist - " & $QBOffSetEntries) Exit EndIf Global $hQBOffSetEntries = FileOpen($QBOffSetEntries, 1) If $hQBOffSetEntries = -1 Then MsgBox(0, "Error", "Unable to open - " & $QBOffSetEntries) Exit EndIf Return EndFunc ;==>ReadOffSetEntries ;AutoIt_Debugger_Command:Enable_Debug Func ReadRecord() ; Read the transaction records While $fResult = 1 Global $sString = FileReadLine($hQBTrans) If @error = -1 Then ;End of file reached ExitLoop EndIf $asFields = StringRegExp($sString, $sPattern, 3) ; _ArrayDisplay($asFields, "Input Fields") If $asFields[0] = "TRNS" Then $Found = "No" For $x = 1 To UBound($Vendor) - 1 If StringInStr($asFields[5], $Vendor[$x]) > 0 Then ; MsgBox(0,"","FOUND IT!!!") ; MsgBox(0, "Found", '"' & $asFields[5] & '" was not found in the array.' & @LF & "Vendor - " & $Vendor[$x] & @lf & "$x - " & $x & @LF & "NumberOfLines - " & $NumberOfLines) $Found = "Yes" $ExpenseAccount = '"' & $Account[$x] & '"' ExitLoop EndIf ; MsgBox(0, "Not Found", '"' & $asFields[5] & '" was not found in the array.' & @LF & "Vendor - " & $Vendor[$x] & @lf & "$x - " & $x & @LF & "NumberOfLines - " & $NumberOfLines) Next If $Found = "No" Then GUICreate("Select an expense account for - ", 350, 250, -1, -1) $listbox = GUICtrlCreateList("", 95, 40, 180, 150) GUICtrlSetData($listbox, "Car/Truck Expense:Gas|Travel & Entertainment:Meals|Hardware|Software|Postage and Delivery|Office:Supplies|Credit Card DEBIT Offset|Credit Card CREDIT Offset|Dues and Subscriptions") $label = GUICtrlCreateLabel($asFields[5], 45, 20, 320) $label = GUICtrlCreateLabel("Date: " & $asFields[3] & " Amount: " & $asFields[6], 100, 210, 320) GUISetState() While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $listbox ; 3 $AccountSelected = _GUICtrlListGetText($listbox, _GUICtrlListSelectedIndex($listbox)) If ($AccountSelected == $LB_ERR) Then MsgBox(16, "Error", "Unknown error from _GUICtrlListGetText") Else ; GUICtrlSetData($label, "Item : " & $AccountSelected) $ExpenseAccount = '"' & $AccountSelected & '"' ExitLoop EndIf EndSelect WEnd GUIDelete() UpdateVendors() EndIf WriteRecords ($asFields) Global $sString = FileReadLine($hQBTrans) If @error = -1 Then ;End of file reached ExitLoop EndIf $asFields = StringRegExp($sString, $sPattern, 3) ; _ArrayDisplay($asFields, "Input Fields") If $asFields[0] = "SPL" Then $asFields[4] = $ExpenseAccount ; _ArrayDisplay($asFields, "Input Fields") ; WriteRecords($asFields) EndIf WriteRecords ($asFields) ExitLoop EndIf ; MsgBox(4096, "Record", "InputString - " & $sString & @LF & "Result - " &$fResult) If $asFields[0] = "!TRNS" Or $asFields[0] = "!SPL" Or $asFields[0] = "SPL" Or $asFields[0] = "!ENDTRNS" Or $asFields[0] = "ENDTRNS" Then WriteRecords ($asFields) EndIf WEnd ;The pattern works as follows: ; ^[^"]*? - matches anything up to the first double-quote ; (?: - starts a group (the '?:' tells StringregExp not to remember the matching text ; ["] - matches an opening double quote ; [^"]*? - matches anything between the double quotes ; ["] - matches a closing double quote ; [^"]*? - matches any characters up to the next double quote ; )*? - finishes the group, and tells RegExp to look for zero or more of these groups (DQ string followed by other chars) ; ["] - matches an unmatched double quote ; [^"]*?$ - matches remaining characters up to the end of the line ; To Test the pattern: ; $sUnterminatedDQ = '^[^"]*?(?:["][^"]*?["][^"]*?)*?["][^"]*?$' ; $sString = 'no double-quoted string in the line' ; $fResult = StringRegExp($sString, $sUnterminatedDQ, 0) ; if @error or $fResult Then ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $fResult = ' & $fResult & @crlf & '>Error code: ' & @error & ', Extended: ' & @extended & @crlf);### Debug Console ; $sString = 'double-quoted "string" in the line' ; $fResult = StringRegExp($sString, $sUnterminatedDQ, 0) ; if @error or $fResult Then ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $fResult = ' & $fResult & @crlf & '>Error code: ' & @error & ', Extended: ' & @extended & @crlf);### Debug Console ; $sString = '"double-quoted string" at start' ; $fResult = StringRegExp($sString, $sUnterminatedDQ, 0) ; if @error or $fResult Then ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $fResult = ' & $fResult & @crlf & '>Error code: ' & @error & ', Extended: ' & @extended & @crlf);### Debug Console ; $sString = 'double-quoted string "at the end"' ; $fResult = StringRegExp($sString, $sUnterminatedDQ, 0) ; if @error or $fResult Then ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $fResult = ' & $fResult & @crlf & '>Error code: ' & @error & ', Extended: ' & @extended & @crlf);### Debug Console ; $sString = 'multiple "double-quoted" strings "in the" line' ; $fResult = StringRegExp($sString, $sUnterminatedDQ, 0) ; if @error or $fResult Then ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $fResult = ' & $fResult & @crlf & '>Error code: ' & @error & ', Extended: ' & @extended & @crlf);### Debug Console ; $sString = 'unterminated "double-quoted string in the line' ; $fResult = StringRegExp($sString, $sUnterminatedDQ, 0) ; if @error or $fResult Then ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $fResult = ' & $fResult & @crlf & '>Error code: ' & @error & ', Extended: ' & @extended & @crlf);### Debug Console ; All of the stuff up to the "unmatched double quote" is necessary to handle correctly matched double quotes in the line ... EndFunc ;==>ReadRecord Func WriteRecords ($asFields) ; write records out ; _ArrayDisplay( $asFields, "_ArrayToString() Test" ) Dim $sRecordOut = _ArrayToString($asFields, ",", 0, 6) ; MsgBox( 4096, "_ArrayToString() Test", $sRecordOut ) FileWriteLine($hQBTransOut, $sRecordOut & @CRLF) EndFunc ;==>WriteRecords Func UpdateVendors() Dim $myedit, $Status, $msg, $Btn_GET, $a_sel, $NewVendorT GUICreate("Vendor Name Selection", 302, 140) $myedit = GUICtrlCreateEdit($asFields[5], 20, 32, 270, 27, $ES_AUTOVSCROLL) GUICtrlSetLimit($myedit, 1500) $Status = GUICtrlCreateLabel("", 30, 120, 200, 20, BitOR($SS_SUNKEN, $SS_CENTER)) $Btn_GET = GUICtrlCreateButton("Highlight Vendor Press to select", 100, 65, 90, 40, $BS_MULTILINE) GUISetState() ; Run the GUI until the dialog is closed While 1 $msg = GUIGetMsg() Select Case $msg = $GUI_EVENT_CLOSE ExitLoop Case $msg = $Btn_GET ; 5 $a_Sel = _GUICtrlEditGetSel ($myedit) If ($a_Sel == $EC_ERR) Then GUICtrlSetData($Status, "Error getting sel positions") ElseIf (IsArray($a_Sel)) Then $NewVendor = StringMid(GUICtrlRead($myedit), $a_Sel[1] + 1, ($a_Sel[2] - $a_Sel[1]) + 1) $NewVendorT = StringStripWS($NewVendor, 2) GUICtrlSetData($Status, $NewVendorT) ReDim $Vendor[UBound($Vendor) + 1] ReDim $Account[UBound($Account) + 1] $Vendor[Ubound($Vendor) -1] = $NewVendorT $Account[Ubound($Account) -1] = $AccountSelected ; _ArrayDisplay($Vendor, "Vendor") ; _ArrayDisplay($Account, "$Account") $sRecordOut = $NewVendorT & "," & $AccountSelected FileWriteLine($hQBOffSetEntries, $sRecordOut & @CRLF) Else GUICtrlSetData($Status, "") EndIf GUIDelete() ExitLoop EndSelect WEnd EndFunc ;==>UpdateVendors ;AutoIt_Debugger_Command:Disable_Debug Func OpenFiles () If Not FileExists($QBTrans) Then MsgBox(0, "Error", "File doesn't exist - " & $QBTrans) Exit EndIf Global $hQBTrans = FileOpen($QBTrans, 0) If $hQBTrans = -1 Then MsgBox(0, "Error", "Unable to open - " & $QBTrans) Exit EndIf Global $hQBTransOut = FileOpen($QBTransOut, 2) If $hQBTransOut = -1 Then MsgBox(0, "Error", "Unable to open - " & $QBTransOut & " file.") Exit EndIf If Not FileExists($QBOffSetEntries) Then MsgBox(0, "Error", "File doesn't exist - " & $QBOffSetEntries) Exit EndIf Global $hQBOffSetEntries = FileOpen($QBOffSetEntries, 0) If $hQBOffSetEntries = -1 Then MsgBox(0, "Error", "Unable to open - " & $QBOffSetEntries) Exit EndIf EndFunc ;==>OpenFiles ;AutoIt_Debugger_Command:Enable_Debug ;AutoIt_Debugger_Command:Disable_Debug Func _NFileCountLines ($sFile) Local $AArray Local $Content Local $FileSize If Not FileExists($sFile) Then Return 0 Else $FileSize = FileGetSize($sFile) $Content = FileRead($sFile, $FileSize) If Not StringInStr($Content, @LF) Then Return 1 Else $AArray = StringSplit($Content, @LF) ; _ArrayDisplay($AArray, "$AArray") $NumberOfLines = $AArray[0] Return $NumberOfLines EndIf EndIf EndFunc ;==>_NFileCountLines ;AutoIt_Debugger_Command:Enable_Debug Func Set_Exit () FileClose($QBTrans) FileClose($QBTransOut) FileClose($QBOffSetEntries) Exit EndFunc ;==>Set_Exit Thank you, Docfxit
andybiochem Posted October 15, 2008 Posted October 15, 2008 You get "WARNING: $SS_SUNKEN: possibly used before declaration" these sort of errors when you fail to use the correct includes.Put these at the top of your script to remove these errors#include <StaticConstants.au3> #include <ButtonConstants.au3>The functions you're using:_GUICtrlListSelectedIndex()_GUICtrlListGetText()_GUICtrlEditGetSel()...don't even exist in the current version. Are you using an old version? Current stable version is v3.2.12.1.Check the help file to see which functions you need.Hint: This may be what you need:_GUICtrlListBox_GetSelItems_GUICtrlListBox_GetText_GUICtrlEdit_GetSel - Table UDF - create simple data tables - Line Graph UDF GDI+ - quickly create simple line graphs with x and y axes (uses GDI+ with double buffer) - Line Graph UDF - quickly create simple line graphs with x and y axes (uses AI native graphic control) - Barcode Generator Code 128 B C - Create the 1/0 code for barcodes. - WebCam as BarCode Reader - use your webcam to read barcodes - Stereograms!!! - make your own stereograms in AutoIT - Ziggurat Gaussian Distribution RNG - generate random numbers based on normal/gaussian distribution - Box-Muller Gaussian Distribution RNG - generate random numbers based on normal/gaussian distribution - Elastic Radio Buttons - faux-gravity effects in AutoIT (from javascript)- Morse Code Generator - Generate morse code by tapping your spacebar!
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