2012-12-13 26 views
0

我正在Visual Studio 2010中使用vb創建一個條形碼掃描程序。從文本文件中的列表中讀取某個行,並在列表框中顯示,Visual Studio 2010

我來了很遠,但似乎卡住了這個小問題。

我有保存的文本文件並在它的數據顯示如下:

0001#Unsmoked Middle Bacon 
0002#Smoked Middle bacon 
0003#Unsmoked Bits 
0004#Smoked Bits 
0005#Unsmoked Back 
0006#Smoked Back 
0007#Unsmoked Streaky 
0008#Smoked Streaky 

我沒有問題,閱讀和分裂與#字符串,我可以填充2個列表框,1顯示4位代碼,另一個是產品名稱。 (這只是一個測試場景)

我真正想要做的是搜索一個變量,這是一個用戶輸入數字,如「0004」的變量,這將顯示回給我「煙燻的位」。

我想我想逐行讀取,直到它打到正確的數字,然後閱讀也許使用substr?你們大概可以在這裏幫助我。

While Not sreader.EndOfStream        
       lineIn = sreader.ReadLine() 
       Dim elements() As String = Nothing      
       elements = lineIn.Split("#") 
       lstProdTest.Items.Add(elements(0)) 
       lstProdName.Items.Add(elements(1)) 
       PLUnumber(index) = elements(0) 
       itemName(index) = elements(1) 
       numProds = numProds + 1 
       index = index + 1 
      End While 

回答

0

原產說,提供這個文件的心不是那麼大,消耗太多的內存,讀取一次數據是要走的路:

Private _barcodes As Dictionary(Of Integer, String) 
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    'EDIT forgot to initialize _barcodes: 
    _barcodes = New Dictionary(Of Integer, String) 
    For Each line In IO.File.ReadAllLines("c:\path\to\file.txt") 
     Dim data = line.Split("#"c) 
     _barcodes.Add(CInt(data(0)), data(1)) 
    Next 
End Sub 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    Dim input As String = InputBox("type the barcode to test, eg 0004:") 
    Dim key As Integer = CInt(input) 
    'if you entered 0004 then this will display Smoked Bits 
    If _barcodes.ContainsKey(key) Then 
     MessageBox.Show(_barcodes(key)) 
    Else 
     MessageBox.Show("Key not found") 
    End If 
End Sub 

注意這只是一個簡單的例子,將需要錯誤處理要添加(丟失的文件,數據等的格式不正確)

如果數據量巨大的再考慮一個數據庫,而不是,SQLite的將是一個簡單的選擇

+0

我可以看到這是如何工作現在:) 我似乎是sprin儘管在表單加載時出現錯誤。 「未將對象引用設置爲對象的實例。」 _barcodes.Add(CInt(data(0)),data(1)) 任何想法? –

+0

http://i.imgur.com/0QCwj.jpg –

+0

@RobbieSeath對不起,請參閱編輯 – Steve

0

正如他們所說,過早優化是所有弊端的根源。每次需要項目描述時,您應該一次讀取文件(在應用程序開始時),將其存儲在內存中(可能爲Dictionary(of Integer, String)),然後在嘗試獲取描述時參考此文件一個物品。

你當然可以進一步創建一個自定義類來存儲每個條目的附加信息。

相關問題