2016-03-08 75 views
1

我正在研究一個應該比較直接的vb項目。從文本文件讀取行並將它們輸出到新的文本文件。但是,當我在Visual Studio中運行此代碼時,我不斷收到錯誤'期望的語句結束'(BC30205)和'pv_objText未聲明'(BC30451)。我真的很不清楚錯誤在哪裏。任何幫助將不勝感激,謝謝。在modUtilitiesVisual Basic寫入文件錯誤

'Variables 

    Const sFilePath As String = "Contacts.txt" 
    Const c_sOutputFilePath As String = "ContactsReport.txt" 
    Dim fileInput As StreamReader 
    Dim fileOutput As StreamWriter 
    Dim sText As String = "" 
    Dim sDivider As String = "--------------------------------------------------------------------" 


    'Begin Code 

    SetTitle("Contacts2") 

    fileInput = File.OpenText(sFilePath) 
    fileOutput = File.CreateText(c_sOutputFilePath) 

    While fileInput.Peek <> -1 

     sText = fileInput.ReadLine 
     fileOutput.WriteLine("Name: " & sText) 
     fileOutput.WriteLine() 

     sText = fileInput.ReadLine 
     fileOutput.WriteLine("Address: ") 
     sText = fileInput.ReadLine 
     fileOutput.WriteLine(sText) 
     sText = fileInput.ReadLine 
     fileOutput.WriteLine(sText & ", ") 
     sText = fileInput.ReadLine 
     fileOutput.WriteLine(sText & " ") 
     sText = fileInput.ReadLine 
     fileOutput.WriteLine(sText) 
     fileOutput.WriteLine() 
     fileOutput.WriteLine() 

     sText = fileInput.ReadLine 
     fileOutput.WriteLine("Phone: " & sText) 
     fileOutput.WriteLine() 

     sText = fileInput.ReadLine 
     fileOutput.WriteLine("Email: " & sText) 
     fileOutput.WriteLine(sDivider) 
     fileOutput.WriteLine() 
     fileOutput.WriteLine() 

    End While 

    fileInput.Close() 
    fileOutput.Close() 

End Sub 

End Module 

線57是在錯誤發生在第一線存在的是在​​這裏:

(它也指的是第59行,其中pv_objText是)

Public Sub fileOutput.WriteLine(Optional ByVal pv_objText As Object = "") 

    Dim sText As String = CStr(pv_objText) 

    fileOutputwrite(sText & vbNewLine) 

End Sub 
+0

你在哪一行得到錯誤?除非您完全確定您知道輸入文件中的行數,否則我認爲爲單個Peek執行多個ReadLine是非常不尋常的。 –

+0

嗯,它來自一個單獨的vb文件的第57行。我工作的主要vb文件是modStudent,另一個是modUtilities。 – elpretentio

+0

我編輯帖子以包含它指向的區域。 – elpretentio

回答

0

這是一個稍微改寫你的方法。 根據您的線路進行相應的調整,看看它是否能解決您的問題。

Private Sub ReadWriteContacts() 

     Const sFilePath As String = "c:\test\Contacts.txt" 
     Const c_sOutputFilePath As String = "c:\test\ContactsReport.txt" 
     Const divider As String = "--------------------------------------------------------------------" 

     Dim linePosition As Integer 

     'include tests for exists output and delete it 
     'include test for missing input and report it 

     Using fileInput As StreamReader = New StreamReader(sFilePath) 
      Using fileOutput As StreamWriter = File.CreateText(c_sOutputFilePath) 

       Do Until fileInput.EndOfStream 

        Dim sText As String = fileInput.ReadLine 
        linePosition += 1 
        Select Case linePosition 
         Case 1 
          fileOutput.WriteLine("Name: " & sText) 
          fileOutput.WriteLine() 

         Case 2 
          fileOutput.WriteLine("Address: ") 

         Case 3 
          fileOutput.WriteLine(sText) 

         Case 4 
          fileOutput.WriteLine(sText & ", ") 

         Case 5 
          fileOutput.WriteLine(sText & " ") 

         Case 6 
          fileOutput.WriteLine(sText) 
          fileOutput.WriteLine() 
          fileOutput.WriteLine() 

         Case 7 
          fileOutput.WriteLine("Phone: " & sText) 
          fileOutput.WriteLine() 

         Case 8 
          fileOutput.WriteLine("Email: " & sText) 
          fileOutput.WriteLine(divider) 
          fileOutput.WriteLine() 
          fileOutput.WriteLine() 
        End Select 

       Loop 
      End Using 
     End Using 

    End Sub