我很新的編程和嘗試編寫一個程序,它從txt文件讀取有關房地產屬性的數據,並且可以選擇添加在txt文件的其餘屬性下的新行上的另一個屬性。Visual Basic - ReDim保留 - 對象引用未設置爲對象的實例
這是次處理陣列的使用ReDim此刻:
Private Sub ExitSetTexts()
Dim propertyId As String = arrListings(UBound(arrListings)).propertyId
ReDim Preserve arrListings(UBound(arrListings) + 1)
arrListings(UBound(arrListings)).address = txtAddress.Text
arrListings(UBound(arrListings)).city = txtCity.Text
arrListings(UBound(arrListings)).state = txtState.Text
arrListings(UBound(arrListings)).postcode = txtPostcode.Text
If rbHouse.Checked = True Then
arrListings(UBound(arrListings)).type = "H"
ElseIf rbUnit.Checked = True Then
arrListings(UBound(arrListings)).type = "U"
ElseIf rbAcreage.Checked = True Then
arrListings(UBound(arrListings)).type = "A"
End If
arrListings(UBound(arrListings)).bedrooms = txtBedrooms.Text
arrListings(UBound(arrListings)).salePrice = txtSalePrice.Text
propertyId = CInt(propertyId.Trim.Remove(0, 1))
propertyId = CInt(propertyId) + 1
propertyId = CInt(propertyId).ToString("D4")
propertyId = " P" + propertyId
arrListings(UBound(arrListings)).propertyId = propertyId
End Sub
當我運行程序,輸入所有的細節,然後點擊運行此代碼的按鈕,它拋出一個NullReferenceException說:「其他信息:對象引用不設置到對象的實例」,並強調這一行:
arrListings(UBound(arrListings)).address = txtAddress.Text
我相信如預期,因爲如果我將其更改爲(UBound函數(arrListings)使用ReDim不工作 - 1 ),那麼它會重寫新的信息最後一行非常好,但我不能把它寫在一個新的行。
任何指導將不勝感激,
謝謝。
編輯:
忘了補充,其中我聲明數組的部分。我覺得我做這件事的方式相當狡猾,但這是我想到的第一種方式,它似乎起作用。
在modMain是這樣的;
Private listings() As Listing
進一步在模塊中是這個功能;
Public Function getListings() As Listing()
Return listings
End Function
在frmListings的頂部,我聲明瞭第二個數組;
Private arrListings() As Listing
frmListings然後像這樣在frmListings_Load上調用這個函數;
arrListings = getListings()
然後,在結束時關閉窗體是調用它取代了原來陣列與所述第二陣列中的改變的數據在數據中的第二子。
像這樣;
setListings(arrListings)
Public Sub setListings(ByVal arrListings())
listings = arrListings
End Sub
這是非常混亂,但我不知道如何從窗體中使用模塊中的數組,所以我只是這樣做。
您是否聲明瞭arrListings?如果是這樣,你能告訴我們那部分代碼嗎? –