繁体   English   中英

错误消息:在“array.get()”中 function。 索引 1 超出范围,数组大小为 1

[英]Error Message: In 'array.get()' function. Index 1 is out of bounds, array size is 1

我试图允许通过手动输入手动删除(或更改坐标)数组中的线。 当我 plot 'array.size' function 时,它显示数组大小为 14,但是当我尝试关闭数组中除第一行(索引 = 0)之外的任何行时,它给了我这个错误:“在 ' array.get()' function。索引 1 超出范围,数组大小为 1。” 代码:

var line [] line_array= array.new_line ()

if m_sr 
    line_supres = line.new (m_time, m_sr, (m_time+1), m_sr, xloc.bar_time, extend.right, color.green)

    array.push (line_array, line_supres )

    if (barstate.isrealtime == false)                                        //confirmed
        line.set_color (line_supres, color.purple) 
        
    if (tf_supres1 == false)                                 
        line.set_y1 (array.get (line_array, 0), 0)
        line.set_y2 (array.get (line_array, 0), 0)
    if (tf_supres2 == false)                                 
        line.set_y1 (array.get (line_array, 1), 0)
        line.set_y2 (array.get (line_array, 1), 0)
    if (tf_supres3 == false)                                 
        line.delete (array.get (line_array, 2))
    if (tf_supres4 == false)                                 
        line.delete (array.get (line_array, 3))
    if (tf_supres5 == false)                                 
        line.delete (array.get (line_array, 4))
    if (tf_supres6 == false)                                 
        line.delete (array.get (line_array, 5))
    if (tf_supres7 == false)                                 
        line.delete (array.get (line_array, 6))
    if (tf_supres8 == false)                                 
        line.delete (array.get (line_array, 7))
    if (tf_supres9 == false)                                 
        line.delete (array.get (line_array, 8))
    if (tf_supres10 == false)                                 
        line.delete (array.get (line_array, 9))
    if (tf_supres11 == false)                                 
        line.delete (array.get (line_array, 10))
    if (tf_supres12 == false)                                 
        line.delete (array.get (line_array, 11))
    if (tf_supres13 == false)                                 
        line.delete (array.get (line_array, 12))
    if (tf_supres14 == false)                                 
        line.delete (array.get (line_array, 13))
    if (tf_supres15 == false)                                 
        line.delete (array.get (line_array, 14))
    if barstate.islast
        label.new (bar_index, 0, "Array Size: " + str.tostring (array.size(line_array)))

以下是一些 plot 屏幕截图:

1.) Plot 没有线路关闭

2.) Plot 关闭第 1 行(正确将坐标更改为第 0 行)

3.) Plot 关闭第 2 行(打破图表,显示任何第 2 行的错误消息)

没有关闭线的绘图

关闭第 1 行的绘图(正确地将坐标更改为 0 行)

关闭第 2 行的绘图(打破图表,显示任何行 2-last 的错误消息)

提前非常感谢!

研究错误
在“array.get()”中 function。 索引 1 超出范围,数组大小为 1。

它说什么?
我们试图通过索引#1 来引用数组中的一项,但这个数字是无效的,因为我们的数组只有一项。
这是正确的,因为计算机科学中的索引从 #0 而不是 #1 开始。 所以元素 1 的索引为 #0,元素 2 的索引为 #1 等等,但你可能知道这一点。

在这种情况下,您的问题如下:
m_sr为真的第一个柱上,您正在推动数组中的第一个元素。 所以你的数组有 1 个索引为 #0 的元素。
然后你继续, tf_supres2 == false是真的,因为你把它关了(我想,但我没有看到你的输入)所以你试图调用array.get(line_array, 1)但你没有2 个元素,所以当你试图引用它时,索引 #1 丢失了。
如果您将所有内容都打开,则没有问题,因为这些行可以填满数组。 如果你关闭第一个,没问题,因为你的数组中总是至少有 1 个项目,所以会找到索引 #0。

解决方案:
更改条件如下: if tf_supres2 == false and array.size(line_array) > 1 (分别更改其他条件的数字)
下次请提供完整或至少更完整的代码,以便社区可以为您提供更准确的信息/支持。 没有看到一切,很难帮助你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM