2016-09-15 3 views
0

これは基本的にです。テキストファイルから配列にデータを転送してテキストファイルに戻す方法

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

などと私はにそれを送信することの「10」を言わせて変更することができるようにする必要があります:私は、私はそうのようなテキストファイルにすべての私の情報を入れているように、テキストファイル内の在庫レベルを更新する必要があります配列を保存してテキストファイルに戻します。例えば。私は "10"を取って "10"(しかし変数として) - 数量.....数量は、ユーザーが注文する金額です。この例では、Quantity = 3と言うことができますので、 "7"に "10"を作成し、テキストファイルに "7"という名前で保存しますので、次回は "7"と "10"どんなアイデアも高く評価されます。

+0

ちょっと変わったことに、在庫アイテムの識別子がありません。これは、データの保存、再ロード、操作、および再保存の方法を示しています。通常、これはデータベースを使用するものですが、小さなデータセットの場合はクラスを作成できます。 Listに格納してシリアル化します。数字が戻ってくる数字 – Plutonix

+0

あなたのアイデアを試してみて、それを修正したかどうか教えてください。 :) – Matt

答えて

0

Plutonixのように、このようなことはデータベースのために作られたものであり、在庫の各行に何らかの識別子が必要です...しかし、絶対にデータをテキストとして保存する必要がある場合は、 xmlとして保存してシリアライズするほうがはるかに優れています。ここではコンセプトの例を挙げていますが、これは1つの「行」だけを使用していますが、それ以上は追加できます。

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

関連する問題