2010-04-15 15 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() 

我的問題是,我不知道如何查找數組的索引,其中.accountNumber =一個變量。例如,acccountNumber是253,找到與此相關的索引的代碼是什麼?VB.NET:我不能找到一個數組的索引

在此先感謝

+0

我編輯了標題。不要讓人們認爲你是那種認爲.net在他的代碼不起作用時必須被破解的人。 ; -O歡迎使用StackOverflow,並確保在他們滿意時接受並提供答案。 – 2010-04-15 11:03:03

回答

0

寫通過數組搜索功能,循環和返回索引,如果你已經找到了指定的記錄。您也可以使用一個Dictionary,像

Public UserRecords As New Dictionary(Of Integer, Usersclass) 

,你可以使用這樣的

Dim desiredUser As Usersclass = UserRecords(hisAccountNumber) 
+0

我不知道代碼是通過什麼來搜索並找到索引隊友,這是我的問題 – steve 2010-04-15 09:04:22

+0

@steve:做一個簡單的'For i As Integer = 0 to userRecords.Length - 1 Step 1'' Loop with'如果' - 比較並且如果帳號匹配則'返回'。 – Bobby 2010-04-15 10:15:20

1

你會更好下降數組的使用,而是看字典對象。

一個非常類似於數組的字典,但是你可以使用一個鍵來定位一個對象,在你的情況下是賬號。

   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

嘿,謝謝你的快速回復。我對字典對象不熟悉,而且我到處都有一堆代碼。任何機會,你可以告訴我如何用我原來的方式做到這一點?我不知道如何自信地瀏覽並使用此方法保存,修改和刪除文件 – steve 2010-04-15 08:59:17

+0

此外,這是找到帳號而不是帳號的索引? – steve 2010-04-15 09:07:56

+0

你可以用你原來的方式來做,但效率很低 - 就像翻閱書籍的每一頁來尋找你以後的頁面。爲什麼你需要能夠通過索引找到用戶? – CResults 2010-04-15 10:03:14

0

字典對象可能正是你在找什麼。它讓你設置你自己的密鑰而不是使用數組索引。我不寫太多VB,但這裏是它看起來像在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

哇,我不知道對不起...我已經編程了大約一個月 – steve 2010-04-15 09:01:55

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 
相關問題