2016-03-08 96 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