2016-09-15 110 views
0

基本上如此。我要更新在文本文件中的庫存水平,所以我已經把我所有的信息到一個文本文件,像這樣:如何將文本文件中的數據轉換爲數組並返回到文本文件

Stock level, Target level, Restock  
    10,   20,   5 

等,我需要能夠改變讓我們說「10」通過它發送到然後將數組保存並將其發送迴文本文件。例如。我拿「10」做「10」(但作爲一個變量) - 數量.....數量是用戶訂購的數量。在這個例子中,假設數量= 3,那麼它會將「10」變成「7」,並將其保存在文本文件中作爲「7」,所以下次我打開它會說「7」而不是「10」?任何想法將不勝感激。

+0

相當奇怪的是沒有庫存項目標識。通常情況下,您將使用數據庫,但對於較小的數據集,您可以創建一個類。將它存儲在一個List中並將其序列化。這些號碼會返回號碼 – Plutonix

+0

謝謝你生病嘗試你的想法,並告訴你它是否修復它。 :) – Matt

回答

0

像Plutonix說,這樣的事情是什麼數據庫是爲做,你將需要某種標識的每個股票的「行」 ......但是,如果你絕對必須將數據存儲爲文本,然後你將它存儲爲xml並序列化它會好得多。這是一個概念的例子,它只使用一個「行」,但可以添加更多。這只是向你展示如何保存,加載,操作,然後重新保存數據:

Imports System.IO 
    Imports System.Xml.Serialization 

    Public Class Form1 
     Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
      Dim filepath As String = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "test.xml") 
      Dim lstStocks As New List(Of Stock) 
      lstStocks.Add(New Stock("stk1", 10, 20, 5)) 

      MsgBox(lstStocks(0).Name & vbCrLf & 
       "Stock Level: " & lstStocks(0).StockLevel.ToString & vbCrLf & 
       "Target Level: " & lstStocks(0).TargetLevel.ToString & vbCrLf & 
       "Restock:" & lstStocks(0).Restock.ToString) 

      Serialize(lstStocks, filepath) 

      Dim firstLoadStocks As List(Of Stock) = Deserialize(filepath) 
      firstLoadStocks(0).StockLevel -= 3 
      Serialize(firstLoadStocks, filepath) 

      Dim secondLoadStocks As List(Of Stock) = Deserialize(filepath) 
      MsgBox(secondLoadStocks(0).Name & vbCrLf & 
       "Stock Level: " & secondLoadStocks(0).StockLevel.ToString & vbCrLf & 
       "Target Level: " & secondLoadStocks(0).TargetLevel.ToString & vbCrLf & 
       "Restock:" & secondLoadStocks(0).Restock.ToString) 

      Me.Close() 
     End Sub 

     Public Sub Serialize(ByVal ListOfStocks As List(Of Stock), ByVal fp As String) 
      Using sw As New StreamWriter(fp) 
       Dim xmlSer As New XmlSerializer(ListOfStocks.GetType) 
       xmlSer.Serialize(sw, ListOfStocks) 
      End Using 
     End Sub 

     Public Function Deserialize(ByVal fp As String) As List(Of Stock) 
      Dim lstStocks As New List(Of Stock) 
      Using sr As New StreamReader(fp) 
       Dim xmlSer As New XmlSerializer(lstStocks.GetType) 
       lstStocks = xmlSer.Deserialize(sr) 
      End Using 
      Return lstStocks 
     End Function 
    End Class 
+0

這已經解決了我的問題謝謝:)非常感謝 – Matt

相關問題