首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

VB 数据类型,该怎么解决

2012-04-19 
VB 数据类型问题:我在模块里定义如下:VB codePublic Type ObsValP1 As DoubleL1上的P码伪距End TypePubli

VB 数据类型
问题:
  我在模块里定义如下:

VB code
Public Type ObsVal    P1 As Double         'L1上的P码伪距End TypePublic Type XYZRS   rx As Double   ry As Double   rz As DoubleEnd TypePublic Type O_Data    data() As ObsVal    ComSateRS() As XYZRSEnd TypePublic Type Ofile    LiYuan() As O_DataEnd TypePublic Odata1 As Ofile

问题:
VB code
for i = 1 to 10  For j = 1 To n      Odata1.LiYuan().ComSateRS(j).rx = 3   Next jnenxt i
为什么会显示 Odata1.LiYuan().ComSateRS(j).rx 下标越界 ??

奇怪的是:
VB code
 for i = 1 to 10  For j = 1 To n      4=Odata1.LiYuan().data(j).P1   Next j next i
竟然可以成立
 
为什么上面就是下标越界 下面的可以运行呢 ??





[解决办法]
类型里面用了不定长度的数组,这个数组初始化了没有?

怎么也得有个redim之类吧?
VB code
Public Type abc        a() As IntegerEnd TypePublic Type ccc        a As abcEnd TypePrivate Sub Form_Load()Dim xx As cccReDim xx.a.a(0 To 2)Debug.Print xx.a.a(1)End Sub
[解决办法]
自定义类型里,使用动态数组,那么你必须在使用动态数组前,进行分配单元

Private Sub Command2_Click()
dim A as O_Data
redim a.data(100)
redim a.ComSateRS(20)
end sub

热点排行