2011-09-17 28 views
0

我使用以下代碼解析出測試文件。當我分配file = Read()時,我在Sub Main()中得到了變量轉換錯誤。 Read()的返回值是一個TextFieldParser類型。如何將適當的變量類型分配給「文件」,以便我可以將輸出寫入文本文件?將變量寫入與分配給該變量的函數類型不同的文件

謝謝!

模塊模塊1

Function Read() 
    Using MyReader As New FileIO.TextFieldParser("C:\Users\Colin\Desktop\Parse_Me.txt") 
     Dim currentRow As String 
     While Not MyReader.EndOfData 
      Try 
       currentRow = MyReader.ReadLine() 
       Console.WriteLine(Parse_me(currentRow)) 
      Catch ex As FileIO.MalformedLineException 
       MsgBox("Line " & ex.Message & 
         " is invalid. Skipping") 
      End Try 
     End While 
     Return MyReader 
     MyReader.Close() 
    End Using 
End Function 

Function Parse_me(ByVal test As String) 
    Dim Set_1, Set_2, Set_3, Set_4, Set_5 As String 
    Dim new_string As String 
    Set_1 = test.Substring(0, 4) 
    Set_2 = test.Substring(7, 2) 
    Set_3 = test.Substring(11, 1) 
    Set_4 = test.Substring(14, 4) 
    Set_5 = test.Substring(20, 4) 
    new_string = Set_1 & " " & Set_2 & " " & Set_3 & " " & Set_4 & " " & Set_5 
    Return new_string 
End Function 


Sub Main() 
    Dim file As Object 
    file = Read() 
    FilePutObject("C:\Users\Colin\Desktop\Parse_Meoutput.txt", file) 
End Sub 

前端模塊

+0

'Dim file As FileIO.TextFieldParser'?除非有一些瘋狂的VB規則我不知道? –

+0

我試過了,仍然收到錯誤。從字符串「C:\ Users \ Colin \ Desktop \ Parse_Meo」轉換爲鍵入「整數」無效。 –

+0

問題是'FilePutObject'需要一個整數作爲第一個參數,而你正在傳遞一個字符串。 –

回答

0

更改函數的定義,「讀」到:

Function Read() as FileIO.TextFieldParser 

,並在子主要變化的「文件」的聲明:

Dim file as FileIO.TextFieldParser 

這樣的功能的數據類型和任務匹配。

1

下面是如何FilePutObject應該工作(從MSDN文檔採取FilePutObject爲例):

Sub WriteData() 
    Dim text As String = "test" 
    FileOpen(1, "test.bin", OpenMode.Binary) 
    FilePutObject(1, text) 
    FileClose(1) 
End Sub 

1充當標識符文件。還要注意的是,在調用FilePutObject之前將文件名傳遞給FileOpen,並且之後調用FileClose。另請注意,字符串正在寫入文件。我不知道哪些類型的數據是有效的傳遞給FilePutObject,但FileIO.TextFieldParser絕對不是其中之一(我剛剛嘗試過)。

糾正我,如果我錯了,但我很確定FilePutObject是從VB6那些carry-overs之一。如果你正在編寫新的代碼,我寧願使用一個Stream對象作爲我的I/O。首先,它更多.Net-ish(即類型安全,面向對象等)。就可用性而言,它更清晰地表示Stream的工作原理,更不用說它不涉及將任意整數作爲句柄傳遞,以便確定要使用哪個文件。最重要的是,Stream可以用於寫入文件,寫入控制檯或將數據發送到另一臺機器。總而言之,我一定會查找Stream類,它的一些子類(如FileStream,以及其他任何對您有吸引力的類)以及一些相關類型(例如便於書寫文本的TextWriter類)。