关于将图形编辑器中的二维数组保存在内部变量的问题

Redim AValveSerialNum(70, 2)
For i = 1 To 70
    AValveSerialNum(i, 1) = ADORS.Fields("设备号")
    AValveSerialNum(i, 2) = ADORS.Fields("允许位")
next
HMIRuntime.Tags("AValveSerialNum").Write AValveSerialNum
我在内部变量建立了一个叫AValveSerialNum的原始类型变量来储存 上面的二维数组,但是读取的时候却说数据类型不匹配,二维数组应该用什么类型的内部变量来存储。
AValveSerialNum = HMIRuntime.Tags("AValveSerialNum").Read
msgbox AValveSerialNum(1,1)
我用上面的方法读就说数据类型不匹配

问题补充:
Redim AValveSerialNum(70, 2)中的70并不是固定的,70是ACTUATOR_NUM的个数,他是通过ACTUATOR_NUM = CInt(ADORS.Fields("阀门数量")),也就是说不确定具体个数的话不就不好一个一个来建立变量了吗

最佳答案

此回答已完善

这样可能不行的
还是对应每个数组元素建立变量如tag0~tag5,通过for循环来操作

示例脚本:

Sub OnClick(ByVal Item)  

Dim A(5)
Dim i
Dim Tag

For i = 0 To 5
 Set Tag = HMIRuntime.Tags("tag" & i)
 Tag.Write A(i)
 Set Tag = Nothing
Next

For i = 0 To 5
 Set Tag = HMIRuntime.Tags("tag" & i)
 A(i)=Tag.Read
 Set Tag = Nothing
Next

End Sub

补充:
那就多建些,内部变量又不花钱。然后循环i和ACTUATOR_NUM对应

提问者对于答案的评价:
是不是数组想要保存在内部变量不管是1维还是2维都只能这样来操作,不能整个存进去,另外可不可以不定义Tag,直接
For i = 0 To 5
 HMIRuntime.Tags("tag" & i).write A(i)
next

最佳答案作者回复:
不能整个保存

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc318009.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月1日
下一篇 2020年11月1日

相关推荐