2017-08-07 14 views
0

問題が発生しました。私が作業しているプログラムがあり、複数の.txtファイルを1つずつ読み込んでwords()という文字列配列を更新する必要があります。主な問題は、アップロードした最初のファイルがfiles()文字列配列になっていることです。ドラッグ&ドロップイベントを実行すると、配列がいっぱいで2番目のアップロードを許可しません。正常にアップロードされた後にfiles()アレイをリセットするにはどうすればいいですか?StreamReaderを使用した.txtファイルの読み込み

サンプルコード:

Dim words(7) As String 
Dim i As Integer = 0 
Public Sub frmMain_DragDrop(sender As Object, e As DragEventArgs) Handles MyBase.DragDrop 

    Dim word As String = "" 
    Try 
     Dim files() As String = e.Data.GetData(DataFormats.FileDrop) 

     For Each path In files 

      MsgBox(path) 
      Dim sr As New StreamReader(path) 

      Do Until sr.Peek = -1 
       word = sr.ReadLine() 

       words(i) = word 

       frmDefaultkWh.lbDefaultkWh.Items.Add(cbAppliances.Items(i) + " = " + words(i)) 
       i = i + 1 

      Loop 


     Next 
     GetPower() 
    Catch ex As Exception 

     'MessageBox.Show(ex.ToString()) 

    End Try 

End Sub 
Private Sub frmMain_DragEnter(sender As Object, e As DragEventArgs) Handles MyBase.DragEnter 

    If e.Data.GetDataPresent(DataFormats.FileDrop) Then 

     e.Effect = DragDropEffects.Copy 

    End If 


End Sub 
+0

_ "完全" _と_ **正確** _の問題が何であるかを明確にしてください。 'MyBase.DragDrop'が呼び出されるたびに再宣言するので、配列は" full "になることはできません。それは不可能です。 –

+0

'words()'文字列配列を更新するために2番目のファイルをドラッグすると、System.IndexOutOfRangeExceptionが発生し、配列は更新されません。 'file()'配列でない場合。次に、次のファイルをアップロードした後、 'words()'配列から値を消去するにはどうしたらいいですか? – Ingelbert

+0

'単語'は配列ではなく、むしろ[** List(Of T) '**](https://msdn.microsoft.com/en-us/library/6sh2ey19(v = vs.110).aspx)あなたは動的なサイズのコレクションが必要です(見つけられる単語の数は分かりません)。リストに新しい項目を追加するには 'yourList.Add()'を呼び出し、すべてを削除するには 'yourList.Clear()'を呼び出します。 –

答えて

1

私はあなたが私が唯一のサイズ7である配列による)最終的に私はあなたの言葉の範囲(外インクリメントすることを意味し、リセットされていないためであると考えていますこれらのファイルのいずれかに7行以上が含まれている場合は、エラーがスローされます。

For Each path In files 
      i = 0 'reset counter 

      MsgBox(path) 
      Dim sr As New StreamReader(path) 

      Do Until sr.Peek = -1 
       word = sr.ReadLine() 

       words(i) = word 

       frmDefaultkWh.lbDefaultkWh.Items.Add(cbAppliances.Items(i) + " = " +  words(i)) 
       i = i + 1 

      Loop 

     Next 
+0

この度はありがとうございます。私はそれを試みたが、私はそれが間違った場所にあったと思う。 – Ingelbert

関連する問題