I am working on updating my channel,here is a problem ,I manage to narrow down my problem and can reproduce it here.
I get this error as I tried to move from the spring board to the video screen
Array operation attempted on variable not DIM’d. (runtime error &he7) in …kg:/source/AppSpringboard.brs(39)
039: PlayVideo(videos[msg.GetIndex()])
Backtrace:
Function showspringboardscreen(video As ) As Integer
file/line: /tmp/plugin/MBBAAAxy1j0…kg:/source/AppSpringboard.brs(39)
Function showposterscreen(videos As ) As Integer
file/line: /tmp/plugin/MBBAAAxy1j08/pkg:/source/AppMain.brs(82)
Function loadjsonfile() As
file/line: /tmp/plugin/MBBAAAxy1j08/pkg:/source/AppMain.brs(51)
Function main() As
file/line: /tmp/plugin/MBBAAAxy1j08/pkg:/source/AppMain.brs(15)
the springboard seems ok as content data is there
here is the function for the video player
Function PlayVideo(video as object) as integer
If I move from the posterscreen to the videoplayer the each video will play based on the array like here
if type(msg) = "roPosterScreenEvent"
if (msg.isListItemSelected())
'PlayVideo(videos[msg.GetIndex()]) ''This work with this'"2"
ShowSpringboardScreen(videos[msg.GetIndex()])
else if (msg.isScreenClosed())
any suggestions,I might have been away too long,so I am losing the “mojo”
Try adding
print type(videos)
print msg.getindex()
print videos.count()
print videos[msg.getindex()]
immediately before PlayVideo(videos[msg.GetIndex()])
as a troubleshooting step. Maybe the index is higher than the number of videos in the array?
You didn’t show where you initialized the videos variable, but apparently it is not an array.
–Mark
here is the array
Function ShowPosterScreen(videos as object) as integer
posterScreen = CreateObject("roPosterScreen")
port = CreateObject("roMessagePort")
posterScreen.SetMessagePort(port)
contentList = CreateObject("roArray",25, true)
for each video in videos
poster = CreateObject("roAssociativeArray")
poster.ShortDescriptionLine1 = video.Title
poster.SDPosterURL = video.Image
poster.HDPosterURL = video.Image
contentList.push( poster )
end for
posterScreen.SetContentList( contentList )
here is the json
Function LoadJSONFile() as void
jsonAsString = ReadAsciiFile("pkg:/json/sample1.json")
m.json = ParseJSON(jsonAsString)
ShowPosterScreen(m.json.Videos)
End Function
this is what I get when i used the print statement
------ Running ------
SpringBoardButton Pressed: 5 index: 1
1
BrightScript Micro Debugger.
Enter any BrightScript statement, debug commands, or HELP.
’
’
Array operation attempted on variable not DIM’d. (runtime error &he7) in …kg:/source/AppSpringboard.brs(40)
040: print videos[msg.getindex()]
Backtrace:
I had 20 in the array but 21 videos so I move it to 25
also print videos.count() gives the following error
‘Dot’ Operator attempted with invalid BrightScript Component or interface reference. (runtime error &hec) in …kg:/source/AppSpringboard.brs(40)
040: print videos.count();
do you think my problem is
ShowPosterScreen(m.json.Videos)
When you printed “videos”, the output was “”. That’s your problem. Perhaps you created the videos variable in a different scope than where you’re using it.
–Mark
Feedback
Thanks everyone
kbenson clarified the “m” for me in this post
http://forums.roku.com/viewtopic.php?f=34&t=31874
and jbrave-Joel in this post
http://forums.roku.com/viewtopic.php?f=34&t=39414 so I modify my loadfeed() to
Function LoadJSONFile() as void
jsonAsString = ReadAsciiFile("pkg:/json/sample1.json")
feedinfo = ParseJSON(jsonAsString)
ShowPosterScreen(feedinfo.Videos)
End Function
RokuMarkn pointed out that
When you printed “videos”, the output was "
I found out I was calling videos to play on the videoscreen when I only needed one video so I modify
PlayVideo(videos[msg.GetIndex()])
to match my
Function PlayVideo(video as object) as integer
and so thanks Joel and endless for this beautiful tip on"
Need Help Understanding CreateObject()"
http://forums.roku.com/viewtopic.php?p=255658&sid=cbe3599496ebe07c5760788be91faeac
and finally Joel and whomever said “print” is your friend might I also add “STOP”
Here are the results of the print
Using Json
------ Running ------
msg: idx: 8
roArray
8
20
Image: http://xxx.xxx.xxx.xxx/someimage.png
Url: http://xxx.xxx.xxx.xxx:1935/xxx/xxx/playlist.m3u8
Title: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
SpringBoardButton Pressed: 5 index: 1
roAssociativeArray
1
showVideoScreen | msg = Stream started. | index = 0
showVideoScreen | msg = HLS segment info | index = 0
showVideoScreen | msg = HLS segment info | index = 7000
showVideoScreen | msg = HLS segment info | index = 14000
showVideoScreen | msg = Playback paused. | index = 0
Using XML Parsing
Using xml
------ Running ------
msg: idx: 7
roXMLList
7
20
<Component: roXMLElement>
SpringBoardButton Pressed: 5 index: 1
roXMLElement
1
showVideoScreen | msg = Stream started. | index = 0
showVideoScreen | msg = HLS segment info | index = 0
showVideoScreen | msg = HLS segment info | index = 10000
showVideoScreen | msg = Playback paused. | index = 0
I do value this help