dynamitemedia Posted January 28, 2016 Posted January 28, 2016 i have the following snippet... now its working but i have it inside a function and want to be able to use $aThumb[$i] outside the function in the rest of the script, i tried return and keep getting this error "Invalid keyword at the start of this line.:" Global $iRows = UBound($a, $UBOUND_ROWS) Global $iCols = UBound($a, $UBOUND_COLUMNS) $oID = $oID + 1 $oURL = $oString.selectSingleNode("./url") $oName = $oString.selectSingleNode("./name") $oCategory = $oString.selectSingleNode("./category") $oThumb = $oString.selectSingleNode("./image") $oLanguage = $oString.selectSingleNode("./language") $aThumb = [$iRows] _ArrayAdd($aThumb, $oThumb.text) For $i = 1 To UBound($aThumb) - 1 ConsoleWrite($oID & @TAB & $aThumb[$i] & @CRLF) Next Next ConsoleWrite( "rows: " & $iRows & @CRLF) Thanks for your help
AutoBert Posted January 28, 2016 Posted January 28, 2016 (edited) Have you ever heard that functions can return a result? No, then (Language Reference - User Functions) Or show your (yet not) runable script, how you tried it. Edited January 28, 2016 by AutoBert
dynamitemedia Posted January 28, 2016 Author Posted January 28, 2016 wow no need to be answer only to be rude... thought was such a general question i had given enough info expandcollapse popupGlobal Enum $iServerName, $iUBound Local $sText = "" For $i = 1 To Random(5, 20, 1) $sText &= Chr(Random(65, 122, 1)) Next $link = "http://www.my site.to/api/live.xml?t=" & $sText ; private api ConsoleWrite($link & @CRLF) Local $dBinary = InetRead($link) $sConverted = BinaryToString($dBinary) $strXMLStructure = "//channels/channel" $oXML = ObjCreate("Microsoft.XMLDOM") $oXML.loadXML($sConverted) $oStrings = $oXML.selectNodes($strXMLStructure) $oID = 0 Local $a For $oString In $oStrings If IsArray($a) Then ReDim $a[UBound($a)+1][$iUBound] Else Local $a[1][$iUBound] EndIf Global $iRows = UBound($a, $UBOUND_ROWS) ; Total number of rows. In this example it will be 10. Global $iCols = UBound($a, $UBOUND_COLUMNS) ; Total number of columns. In this example it will be 20. $oID = $oID + 1 $oURL = $oString.selectSingleNode("./url") $oName = $oString.selectSingleNode("./name") $oCategory = $oString.selectSingleNode("./category") $oThumb = $oString.selectSingleNode("./image") $oLanguage = $oString.selectSingleNode("./language") Local $aThumb = [$iRows] _ArrayAdd($aThumb, $oThumb.text) For $i = 1 To UBound($aThumb) - 1 ;ConsoleWrite($oID & @TAB & $aThumb[$i] & @CRLF) local $bThumb = 22 Next ; ConsoleWrite($oID & @TAB & $oName.text & @TAB & $urlString & @TAB & $oThumb.text & @TAB & $oCategory.text & @TAB & $oLanguage.text & @CRLF ) Return $bThumb Next ConsoleWrite( "rows: " & $iRows & @CRLF)
kylomas Posted January 28, 2016 Posted January 28, 2016 (edited) dymanitemedia, "Return" is not allowed from GLOBAL scope, meaning that it is only used within a function, normally to return a value to the caller. Your code is not runnable as several vars are undefined, perhaps some includes are missing? kylomas Also, I would make sure that $ostrings is an object and what are you trying to do with variable $a? Edited January 28, 2016 by kylomas additional info Forum Rules Procedure for posting code "I like pigs. Dogs look up to us. Cats look down on us. Pigs treat us as equals." - Sir Winston Churchill
dynamitemedia Posted January 29, 2016 Author Posted January 29, 2016 (edited) sorry the includes did get missed! full code is here: expandcollapse popup#include <ButtonConstants.au3> #include <ComboConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <GUIListBox.au3> #include <GuiListView.au3> #include <GuiTab.au3> #include <StaticConstants.au3> #include <TabConstants.au3> #include <WindowsConstants.au3> #include <File.au3> #include <Array.au3> #include <Process.au3> #include <Constants.au3> #include <String.au3> #include <Date.au3> Global Enum $iServerName, $iUBound Local $sText = "" For $i = 1 To Random(5, 20, 1) $sText &= Chr(Random(65, 122, 1)) Next $link = "http://my private api /api/live.xml?t=" & $sText ConsoleWrite($link & @CRLF) Local $dBinary = InetRead($link) $sConverted = BinaryToString($dBinary) $strXMLStructure = "//channels/channel" $oXML = ObjCreate("Microsoft.XMLDOM") $oXML.loadXML($sConverted) $oStrings = $oXML.selectNodes($strXMLStructure) $oID = 0 Local $a For $oString In $oStrings If IsArray($a) Then ReDim $a[UBound($a)+1][$iUBound] Else Local $a[1][$iUBound] EndIf Global $iRows = UBound($a, $UBOUND_ROWS) ; Total number of rows. In this example it will be 10. Global $iCols = UBound($a, $UBOUND_COLUMNS) ; Total number of columns. In this example it will be 20. $oID = $oID + 1 $oURL = $oString.selectSingleNode("./url") $oName = $oString.selectSingleNode("./name") $oCategory = $oString.selectSingleNode("./category") $oThumb = $oString.selectSingleNode("./image") $oLanguage = $oString.selectSingleNode("./language") Local $aThumb = [$iRows] _ArrayAdd($aThumb, $oThumb.text) For $i = 1 To UBound($aThumb) - 1 ;ConsoleWrite($oID & @TAB & $aThumb[$i] & @CRLF) local $bThumb = 22 Next ; ConsoleWrite($oID & @TAB & $oName.text & @TAB & $urlString & @TAB & $oThumb.text & @TAB & $oCategory.text & @TAB & $oLanguage.text & @CRLF ) Return $bThumb Next ConsoleWrite( "rows: " & $iRows & @CRLF) I need the thumbs , all of them in the gui... the thing is i want to be able to grab more this just this xml, if it was meant to ONLY use one xml file i can hard code it work just fine... but each api will have different xml structure and i need to code to work with each one EDIT/ Additions the $a is used to get the count of rows and columns i use the rows to know how many buttons i will need to make Edited January 29, 2016 by dynamitemedia adding what $a is for
dynamitemedia Posted January 31, 2016 Author Posted January 31, 2016 so how can i use the info from this XML ? I want to use it to build the gui
dynamitemedia Posted January 31, 2016 Author Posted January 31, 2016 @jdelaney Since you see, the expert at using the xml dom, any ideas how i can do this... I would really like to put this above in a function and still use each of the xml nodes if needed say i click on button 56 it would go to node 56 and get that info
AutoBert Posted January 31, 2016 Posted January 31, 2016 Seeing your script in #5 and checking: >"C:\Program Files\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /prod /AU3Check /in "C:\Users\Bert\AutoIt3.My\Test\jhgfddfgh.au3" +>12:43:50 Starting AutoIt3Wrapper v.14.801.2025.0 SciTE v.3.4.4.0 Keyboard:00000407 OS:WIN_81/ CPU:X64 OS:X64 Environment(Language:0407) +> SciTEDir => C:\Program Files\AutoIt3\SciTE UserDir => C:\Users\Bert\AppData\Local\AutoIt v3\SciTE\AutoIt3Wrapper SCITE_USERHOME => C:\Users\Bert\AppData\Local\AutoIt v3\SciTE >Running AU3Check (3.3.14.1) from:C:\Program Files\AutoIt3 input:C:\Users\Bert\AutoIt3.My\Test\jhgfddfgh.au3 "C:\Users\Bert\AutoIt3.My\Test\jhgfddfgh.au3"(71,27) : error: 'Return' not allowed from global scope. Return $bThumb ~~~~~~~~~~~~~~~~~~~~~~~~~~^ C:\Users\Bert\AutoIt3.My\Test\jhgfddfgh.au3 - 1 error(s), 0 warning(s) !>12:43:53 AU3Check ended. Press F4 to jump to next error.rc:2 +>12:43:53 AutoIt3Wrapper Finished. >Exit code: 0 Time: 5.195 i am wondering about your ignorance.: On 28.01.2016 at 10:31 PM, kylomas said: "Return" is not allowed from GLOBAL scope, meaning that it is only used within a function, normally to return a value to the caller. This snippet: Local $a For $oString In $oStrings If IsArray($a) Then ReDim $a[UBound($a)+1][$iUBound] Else Local $a[1][$iUBound] EndIf show's me: there you need the to learn the basic's. A variable $a just declared without any dimension testing against Array is nonsence. It couldn't be a array, nothing is happend. So work hard from the beginning to the end, including testing the examples of the needed functions. or your script isn't complete, then post your complete script.
Moderators Melba23 Posted January 31, 2016 Moderators Posted January 31, 2016 AutoBert, You have already been told once today about the manner in which you are replying - this is the second and final warning you get to change your ways. If your RTFM emoticon appears again - or if you express a similar unwelcoming attitude in future - your future in this community will be in serious jeopardy. M23 dynamitemedia 1 Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind Open spoiler to see my UDFs: Spoiler ArrayMultiColSort ---- Sort arrays on multiple columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
dynamitemedia Posted January 31, 2016 Author Posted January 31, 2016 these are help forums to ask for help.. why do you feel the need to insult and be rude to people asking for help? that snippet that shows you with your rant was taken from here and it serves a purposehttps://www.autoitscript.com/forum/topic/179751-searching-fields-within-xml/?do=findComment&comment=1290314 I use it to get how many noded(rows) in the array Global $iRows = UBound($a, $UBOUND_ROWS) it works, is it right i am not 100% sure but that works with giving me the right amount of nodes from the XML as far as leaving the "Return" in there i did uncomment it in my code. and it is the whole code and works, when connected to the right xml. I just want to make this a function cause the images in the nodes will complete the gui. Instead of being rude maybe offering a alternate solution would be the way to go
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