在 Visual Basic 6 中获得大约 64k 的限制

Dan*_*Dan 7 vb6

我需要在 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
Run Code Online (Sandbox Code Playgroud)

我现在添加的字段是 1_offsets 和 2_offsets,它们会导致发生错误。似乎这段代码在某种程度上解决了这个问题,因为以下定义为全局:

Global data_v2 AS DATA_V2_T
Run Code Online (Sandbox Code Playgroud)

我也可以为结构做这样的事情吗?

编辑:我试图上课。我能够像这样定义我的变量:

    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
Run Code Online (Sandbox Code Playgroud)

我创建了属性获取方法来访问这些私有变量,如下所示:

Property Get p1_offsets() As Single()
    p1_offsets = 1_offsets
End Property
Run Code Online (Sandbox Code Playgroud)

编译器似乎并没有抱怨这个。但我还需要能够设置数组的值,而我在设置属性时遇到了麻烦。我怎样才能做到这一点?

Bri*_*ord 4

最简单的方法是将数据定义为Variant. 这是一个例子:

Option Explicit

Private Sub Command1_Click()
   Dim one_offsets(6399) As Single
   one_offsets(0) = 33
   one_offsets(1) = 44

   Dim d As Data
   Set d = New Data
   d.one_offsets = one_offsets
End Sub
Run Code Online (Sandbox Code Playgroud)

然后在你的数据类中:

Option Explicit

Private m_1_offsets As Variant
Private m_2_offsets As Variant
Private m_init_d_offsets As Variant
Private m_init_a_offsets As Variant
Private m_e_offsets As Variant
Private m_d_offsets As Variant
Private m_a_offsets As Variant
Private m_final_e_offsets As Variant

Public Property Get one_offsets() As Variant
   one_offsets = m_1_offsets
End Property

Public Property Let one_offsets(ByVal Value As Variant)
   m_1_offsets = Value
End Property
Run Code Online (Sandbox Code Playgroud)

如果您随后m_1_offsets在“监视”窗口中进行检查,您将看到它被定义为Variant/Single(0 to 6399)