Jump to content

xmldom into array and then use outside function


Recommended Posts

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

Link to comment
Share on other sites

wow no need to be answer only to be rude...     thought was such a general question i had given enough info

Global 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)

 

Link to comment
Share on other sites

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 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

Link to comment
Share on other sites

sorry the includes did get missed!  full code is here:
 

#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 by dynamitemedia
adding what $a is for
Link to comment
Share on other sites

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 smiley38.gif 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. 
Link to comment
Share on other sites

  • Moderators

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

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png 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 columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

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 purpose
https://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

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...