【发布时间】:2020-04-16 21:34:39
【问题描述】:
我需要在 VB 中更新这个旧代码,但我遇到了问题。我已经在这个结构中添加了字段,现在当我尝试编译时,我得到了这个错误:
从网上阅读大多数人建议打破结构。问题是我从固件接收这种格式的数据。所以我想保持原样,但想办法解决这个问题。
我的结构是这样的:
Public Type DATA_V2_T
1_offsets(6399) As Single
2_offsets(6399) As Single
init_d_offsets(1199) As Single
init_a_offsets(1199) As Single
e_offsets(999) As Single
d_offsets(749) As Single
a_offsets(1199) As Single
final_e_offsets(6399) As Single
End Type
我现在添加的字段是 1_offsets 和 2_offsets 导致错误发生。这段代码似乎在某种程度上解决了这个问题,因为以下内容被定义为全局:
Global data_v2 AS DATA_V2_T
我也可以为结构做这样的事情吗?
编辑:我尝试过上课。我能够像这样定义我的变量:
Private 1_offsets(6399) As Single
Private 2_offsets(6399) As Single
Private init_d_offsets(1199) As Single
Private init_a_offsets(1199) As Single
Private e_offsets(999) As Single
Private d_offsets(749) As Single
Private a_offsets(1199) As Single
Private final_e_offsets(6399) As Single
我创建了属性获取方法来访问这些私有变量,如下所示:
Property Get p1_offsets() As Single()
p1_offsets = 1_offsets
End Property
编译器似乎没有抱怨这一点。但是我还需要能够设置数组的值,并且我在属性设置方面遇到了麻烦。我该怎么做?
【问题讨论】:
-
不使用Type,可以改用具有相同结构的Class吗?
-
您是否通过声明函数将其传递给外部库?如果是这样,您可以创建一个正确 (> 64kb) 大小的字节数组来创建一个连续的内存区域并传递它而不是 UDT。外部函数将填充它,当它返回时,您可以将缓冲区中的 CopyMemory() 复制到 2 个较小的 UDT 中 - 比如说一个带有 2 个偏移字段,另一个带有剩余字段。
-
你能说明数据是如何被读入结构的吗?
-
@BrianMStafford 我正在尝试这样做。我已经能够将它们设置为私有并使用 Property Get 来检索它们。但我还需要修改它们并且在属性集方面遇到了问题。
-
@Dan 您可以随时根据您的尝试更新您的问题,我们可以为您在课堂上遇到的任何问题提供帮助。
标签: vb6