3 votes

comment ajouter un élément à un tableau 2D VB6

J'utilise un tableau 2D pour stocker le nom d'utilisateur et le mot de passe des utilisateurs. users défini comme un tableau global de chaînes de caractères :

Dim users(9, 2) As String

Comment ajouter un utilisateur à ce tableau ? Définir le nom d'utilisateur et le mot de passe en une seule fois.

8voto

Verdolino Points 2141

Une fois que vous avez Dim les utilisateurs du tableau avec des limites explicites, vous ne pouvez pas ReDim il. Vous pouvez essayer ceci, mais cela ne compilera pas (le tableau est déjà dimensionné).

Dim users(9, 2) As String
ReDim Preserve users(10, 2) ' doesn't compile!

Un autre problème que vous rencontrerez sera d'essayer de ReDim Preserve le premier indice du tableau. Vous pouvez aussi essayer cela, mais vous obtiendrez une erreur d'exécution (Subscript out of range).

Dim users() As String
ReDim Preserve users(0, 1)
ReDim Preserve users(1, 1) ' runtime error!

Au lieu de cela, j'ai trouvé ce qui suit. Vous devrez conserver le premier indice pour distinguer entre username o password . Ce sera la taille 1 (et non 2). Le deuxième indice augmentera au fur et à mesure que vous ajouterez des utilisateurs :

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

Si vous ne pouvez pas échanger le nom d'utilisateur et le mot de passe, vous pouvez envisager une structure de données différente, comme une collection ou un tableau d'une classe personnalisée avec des champs pour le nom d'utilisateur et le mot de passe.

4voto

Hrqls Points 1715

Créer un type défini par l'utilisateur contenant tous les champs

Private Type UserData
  strName As String
  strPass As String
End Type

et ensuite créer un tableau de ce type défini par l'utilisateur

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

1voto

George Points 1258

Bouclez à travers les utilisateurs et assignez des valeurs à l'aray directement :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X