2016-03-08 6 views
1

Я работаю над проектом vb, который должен быть относительно прямым. Прочитайте строки из текстового файла и выведите их в новый текстовый файл. Но когда я запускаю этот код в Visual Studio, я продолжаю получать ожидаемый конец «ожидаемого утверждения» (BC30205), а «pv_objText не объявлен» (BC30451). Мне действительно непонятно, где ошибка. Любая помощь будет оценена, спасибо.Ошибки записи на Visual 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 в modUtilities где ошибка встречающийся в первой строке здесь:

(это также со ссылкой на линию 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

На какой линии вы получаете сообщение об ошибке? Я думаю, что необычно делать несколько ReadLine для одного Peek, если вы не уверены, что знаете количество строк во входном файле. –

+0

Хмм, ну, это идет по строке 57 отдельного файла vb. основной файл 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