一、测试金字塔Stock.Array时,发现里边只能装数字字段,不能装文字字段。
为了能取出“动态显示牌”中符合条件记录的“代码、名称,价格”,在
测试“帮助中范例”的时候,加入了自定义数组。
二、测试结果: Stock.Array 装入、取出数据正确。而自定义数组装入取出数据时出现差错。
错误表现:以2013年2月25日中金期货为例:查出符合条件的记录是6条, Stock.Array
装入、取出正确,自定义数组只装入了3条记录,少了3条。
三、附脚本及测试结果如下:
Sub LX_JC()
dim d,k
dim mc()
Set d = CreateObject("Stock.Array") '测试:金字塔数组,只能装入数据型字段
Count = MarketData.GetReportCount("zj")
application.MsgOut "Count:"&Count
redim mc( Count) '根据市场记录总数定义数组,准备装符合条件字段
For i = 0 To Count-1
Set Report3 = MarketData.GetReportDataByIndex("zj",i)
if Report3.open >0 Then '条件:取当日正常交易的全部记录。
mc(i)= "名称:"&Report3.stockname&":代码:"& Report3.Label &":价格:"&Report3.NewPrice
k=k+1 '对装入自定义数组的记录进行计数,判定装入几条记录
d.AddBack(Report3.NewPrice) '金字塔数组,正在装入数据型记录
End if
Next
application.MsgOut "d.count:"&d.count&":计数器k=:"&k
application.MsgOut mc(0) '输出:装入金字塔记录数和自定义数组中记录条数,结果相等。
application.MsgOut mc(1)
application.MsgOut mc(2)
application.MsgOut mc(3) '取出自定义数组所有记录验证:发现问题:数组中实际只装3条
application.MsgOut mc(4)
application.MsgOut mc(5) '记录,与装入记录计数器K值比较少了3条。
For n =0 To d.count-1
application.MsgOut "数组中的值:"&n+1&":"&d.GetAt(n)
application.MsgOut mc(n)
Next '循环方式输出金字塔数组装入记录和自定义数组装入的记录,
End Sub '发现:金字塔数组中6条记录,自定义数组中只有三条。请问:错在哪儿?
四、附运行输出结果:
Count:17
d.count:6:计数器k=:6
名称:股指连续:代码:IF00:价格:2605
名称:股指1303:代码:IF03:价格:2605
名称:股指1304:代码:IF04:价格:2618.2
数组中的值:1:2605
名称:股指连续:代码:IF00:价格:2605
数组中的值:2:2605
数组中的值:3:2618.2
数组中的值:4:2632.6
名称:股指1303:代码:IF03:价格:2605
数组中的值:5:2657.8
名称:股指1304:代码:IF04:价格:2618.2
数组中的值:6:2612.264
敬请老师指导。谢谢。