2016-07-09 10 views
-1

これを実行すると、フィールドにデータを入力するためのダミーの「Button1」が作成され、テキストボックスに正しく入力されます。どのように私は毎分そのファイルを解析するでしょう、私は再びそれを行うとき、私は以下のエラーが表示されます。 button1_clickにルーチン "DisplayForm_Load"を追加することによって、うまく動作します。VB ParseFileTextメソッドのエラー

私の質問は毎回これを再定義する必要はないと私は確信していますか?インデックスを0に戻したり、それらの行に沿って何かを設定していないと思います。私がMSのウェブサイトから理解できることは、存在しない配列の索引付けのようなものです。

エラーを受信: 型 'System.IndexOutOfRangeException' の未処理の例外がWindowsApplication4.exeで発生した

Imports Microsoft.VisualBasic.FileIO 

パブリック・クラスのForm1に

Private Directory As String ' Used to hold the folder directory to push/pull data from. 
Private FileParser As Microsoft.VisualBasic.FileIO.TextFieldParser 

Private Sub PushButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles PushButton.Click 
    ' Sends information to txt file. 
    ' This bit works fine, just writes code to txt file that can be parsed below. 
End Sub 

Sub DefineTextFieldParse_Load() Handles MyBase.Load 
    ' Instantiate teh TextFieldParser and the set the delimiter 
    Dim FileName As String = "C:\Users\Caleb\Documents\TestDoc.txt" 

    Try 
     FileParser = New FileIO.TextFieldParser(FileName) '' Selects File to Parse 
     FileParser.TextFieldType = FieldType.Delimited 
     FileParser.SetDelimiters(",") 
    Catch ex As Exception 
     ' Errors 
     MessageBox.Show("Unable to read the file" & "," & FileName) 
    End Try 
End Sub 

Sub UpdateCheck() 
    ' Checks share txt file for update. 
    Dim FileName As String = "C:\Users\<Me>\Documents\TestDoc.txt" 
    Dim FieldString() As String 

    'Read the file 
    If Not FileParser.EndOfData Then 
     FieldString = FileParser.ReadFields() 
     ' 1st Field 
     NIS1TextBox.Text = FieldString(0) 
     ' 2nd Field 
     NIS2TextBox.Text = FieldString(1) 
    ' You get the idea...All Testboxes identified above in the write section 
    ' Repeats 12 more times... 
     EODTextBox.Text = FieldString(14) 
     InfoRichTextBox.Text = FieldString.LastOrDefault() 
    End If 

End Sub 

Sub PushUpdate() 

End Sub 

Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click 
    'DefineTextFieldParse_Load()_Load() ' When Enabled code works fine when commented out generates alert. 
    UpdateCheck() 
End Sub 

エンドクラス

+0

例外が発生するのはどのラインですか?その行にはどの索引が使用されていますか?そのインデックスの有効範囲は何ですか? – jmcilhinney

+1

1つの 'TextFieldParser'オブジェクトを持たないことをお勧めします。あなたはいつどこでそれを必要とするのかを作成し、それを直ちに破壊するべきです。 'Using'ステートメントで作成すると、ブロックの最後に暗黙的に破棄されます。そうすると、最後の使用から何かが引き継がれる可能性はありません。 – jmcilhinney

答えて

0

mchihinneyを - 私がやりましたクチコミhttps://msdn.microsoft.com/en-us/library/hks5e2k6.aspx

しかし、私が見つけたのは、テキストファイルのフォーマットに関する問題でした。私が見つけた問題は、テキストファイルには2行目が空白だったので、エラーで何も解析しなかったときでした。 .txtファイルから2行目を削除し、期待通りに機能しました。