2010-04-15 5 views
0
This is the code for my array (which is working) 

Public numUsers As Integer 
Public fNameUsers As String = ("..\..\..\users.txt") 
Public UserRecords As Usersclass() 'note... this line is in a module ' 

reader = New System.IO.StreamReader(fNameUsers) 
numUsers = 0 

    'Split the array up at each delimiter of "," and add new objects ' 
      Do While reader.Peek <> -1 
       ReDim Preserve UserRecords(numUsers) 
       oneline = reader.ReadLine 
       fields = oneline.Split(",") 
       UserRecords(numUsers) = New Usersclass 
       UserRecords(numUsers).AccountNumber = fields(0) 
       UserRecords(numUsers).CourseName = fields(1) 
       UserRecords(numUsers).FirstName = fields(2) 
       UserRecords(numUsers).LastName = fields(3) 
       UserRecords(numUsers).DOB = fields(4) 
       UserRecords(numUsers).Email = fields(5) 
       UserRecords(numUsers).CourseProgress = (6) 
       UserRecords(numUsers).AdminCheck = fields(7) 

       numUsers = numUsers + 1 

      Loop 
      reader.Close() 

Mon problème est que je ne sais pas comment rechercher l'index d'un tableau où le .accountNumber = une variable. Par exemple le acccountNumber est 253, quel est le code pour trouver l'index auquel il se rapporte ????VB.NET: Je ne trouve pas l'index d'un tableau

Merci à l'avance

+0

J'ai effectué votre titre. Ne voulez pas que les gens pensent que vous êtes ce gars qui pense que .net doit être brisé quand son code ne fonctionne pas. ; -O Bienvenue sur StackOverflow et assurez-vous d'accepter et d'upvote des réponses quand ils vous plaisent. –

Répondre

0

Ecrire une fonction de recherche, boucle dans le tableau et retourne l'index si vous avez trouvé l'enregistrement spécifié. Ou vous utilisez un Dictionary, comme

Public UserRecords As New Dictionary(Of Integer, Usersclass) 

que vous pouvez utiliser comme celui-ci

Dim desiredUser As Usersclass = UserRecords(hisAccountNumber) 
+0

Je ne sais pas quel est le code pour rechercher et trouver l'index mate, c'est mon problème – steve

+0

@steve: Faire un simple 'Pour i As Integer = 0 Pour userRecords.Length - 1 Étape 1'-Loop avec un' If'-comparaison et faire «retour» si le numéro de compte correspond. – Bobby

1

Vous seriez mieux laisser tomber l'utilisation des tableaux et des objets plutôt regarder dictionnaire.

Un dictionnaire en termes simples est très similaire à un tableau, mais vous pouvez localiser un objet en utilisant une clé, dans votre cas, le numéro de compte.

   Dim UserRecords as New Dictionary(Of String, Usersclass) 
      Dim UserRecord as Userclass 
      Do While reader.Peek <> -1 

       oneline = reader.ReadLine 
       fields = oneline.Split(",") 

       'Populate your class 
       UserRecord = New Usersclass 
       UserRecord.AccountNumber = fields(0) 
       UserRecord.CourseName = fields(1) 
       UserRecord.FirstName = fields(2) 
       UserRecord.LastName = fields(3) 
       UserRecord.DOB = fields(4) 
       UserRecord.Email = fields(5) 
       UserRecord.CourseProgress = (6) 
       UserRecord.AdminCheck = fields(7) 

       'Add to the dictionary here 
       UserRecords.Add (fields(0),UserRecord) 

      Loop 

      ''Then find your UserRecord by the accountnumber e.g 
      UserRecord = UserRecords("253") 
+0

Hey, merci pour la réponse rapide. Je ne suis pas familier avec les objets du dictionnaire et j'ai des paquets de code partout. Avez-vous une chance de me montrer comment le faire de ma façon originale? Je n'ai aucune idée comment naviguer avec confiance et enregistrer, modifier et supprimer des fichiers avec cette méthode – steve

+0

Aussi est-ce trouver le numéro de compte et pas l'indice du numéro de compte auquel il se rapporte? – steve

+0

Vous pouvez le faire de votre façon originale, mais c'est inefficace - ce serait comme regarder à travers chaque page d'un livre pour trouver la page que vous recherchez. Pourquoi avez-vous besoin de pouvoir trouver un utilisateur par index? – CResults

0

Un objet Dictionnaire est probablement exactement ce que vous recherchez. Il vous permet de définir votre propre clé de l'utilisation d'un index de tableau. Je ne vous écris pas beaucoup VB, mais voici ce que cela ressemblerait à C#:

//Create the dictionary 
Dictionary<int, Account> userRecords = new Dictionary<int, Account>(); 

//Add an account to the dictionary 
userRecords.Add(accountNumber, account); 

//Get an accoutn out of the dictionary 
Account account = userRecords[accountNumber]; 
+0

wow, je n'ai aucune idée désolé ... j'ai programmé depuis environ un mois – steve

0
Do While reader.Peek <> -1 
        ReDim Preserve UserRecords(numUsers) 
        oneline = reader.ReadLine 
        fields = oneline.Split(",") 
        UserRecords(numUsers) = New Usersclass 
        UserRecords(numUsers).AccountNumber = fields(0) 
        UserRecords(numUsers).CourseName = fields(1) 
        UserRecords(numUsers).FirstName = fields(2) 
        UserRecords(numUsers).LastName = fields(3) 
        UserRecords(numUsers).DOB = fields(4) 
        UserRecords(numUsers).Email = fields(5) 
        UserRecords(numUsers).CourseProgress = fields(6) 
        UserRecords(numUsers).AdminCheck = fields(7) 
        UserRecords(numUsers).password = fields(8) 

        numUsers = numUsers + 1 

       Loop 
Questions connexes