Arrays 如何将项添加到VB6二维数组

Arrays 如何将项添加到VB6二维数组,arrays,multidimensional-array,vb6,Arrays,Multidimensional Array,Vb6,我使用2D数组来存储用户的用户名和密码用户定义为全局字符串数组: Dim users(9, 2) As String 如何将用户添加到该阵列?立即设置用户名和密码。通过用户循环,并直接将值分配给aray: Dim cntr As Integer For cntr = 0 To UBound(cntr) - 1 users(x, 0) = "username" users(x, 1) = "password" Next cntr 一旦有了具有显式边界的数组用户,就不能对其进行D

我使用2D数组来存储用户的用户名和密码<代码>用户定义为全局字符串数组:

Dim users(9, 2) As String

如何将用户添加到该阵列?立即设置用户名和密码。

通过用户循环,并直接将值分配给aray:

Dim cntr As Integer
For cntr = 0 To UBound(cntr) - 1
    users(x, 0) = "username"
    users(x, 1) = "password"
Next cntr

一旦有了具有显式边界的数组用户,就不能对其进行
Dim
。 您可以尝试此方法,它不会编译(数组已标注尺寸)

另一个问题是试图
ReDim保留数组的第一个索引。您也可以尝试,您将得到运行时错误(下标超出范围)

相反,我提出了以下建议。您需要保留第一个索引以区分
用户名
密码
。这将是1号(不是2号)。第二个索引将随着用户的增加而增加:

Private Sub Form_Load()
    Dim users() As String
    ReDim users(1, 0)
    Add users, "name1", "pw1"
    Add users, "name2", "pw2"
End Sub

Private Sub Add(ByRef users() As String, username As String, password As String)
    If Not (users(0, 0) = vbNullString And users(1, 0) = vbNullString) Then
        ReDim Preserve users(1, UBound(users, 2) + 1)
    End If
    users(0, UBound(users, 2)) = username
    users(1, UBound(users, 2)) = password
End Sub

如果无法交换用户名和密码,则可能需要查看不同的数据结构,例如具有用户名和密码字段的自定义类的集合或数组。

创建一个包含所有字段的用户定义类型

Private Type UserData
  strName As String
  strPass As String
End Type
然后创建该用户定义类型的数组

Dim udtUser() As UserData
ReDim udtUser(9) As UserData
With udtUser(9)
  .strName = "captain hook"
  .strPass = "parrotname"
End With 'udtUser(9)

可能更好的模型是类的集合/数组。
Private Type UserData
  strName As String
  strPass As String
End Type
Dim udtUser() As UserData
ReDim udtUser(9) As UserData
With udtUser(9)
  .strName = "captain hook"
  .strPass = "parrotname"
End With 'udtUser(9)