テキストファイルの読み込みができない

解決


九十九  2009-10-09 13:39:39  No: 146362  IP: 192.*.*.*

1test.txtの文を1行ずつテキストファイルに読み込みたいのですが
一行目以降が読み込めません。
結合演算子をつけると一行目の文がつながっていきます。
理由がわかりません、ご指導賜りたく思います。





Dim i As Integer = -1
   
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        TextBox1.Text = ""

        Const qfile As String = "c:\1test.txt"
        Dim str( ) As String
        Dim lines As Integer
        


        lines = File.ReadAllLines(qfile).Length
        ReDim str(lines - 1)

        Dim sr As StreamReader = New StreamReader(qfile, Encoding.Default)

        
        i += 1
        str(i) = sr.ReadLine( )

        TextBox1.Text += str(i) + vbCrLf

       


        sr.Close()




    End Sub

編集 削除
九十九  2009-10-09 13:41:55  No: 146363  IP: 192.*.*.*

間違い
'TextBox1.Text = ""コメントアウトです

編集 削除
特攻隊長まるるう  2009-10-09 14:24:36  No: 146364  IP: 192.*.*.*

テキストファイルは1行目から読み込むものですからね。

ファイルを開いて1行目を読み込んで閉じて
もう一度ファイルを開けば1行目から読みます。

ReadLine を繰り返して指定行まで読み飛ばせばいいのでは?

編集 削除
九十九  2009-10-09 15:10:41  No: 146365  IP: 192.*.*.*

何とかクリックするたびに一行ずつ読み込むことが
できるようになりました。
コードこれでいいのでしょうか?
できればアドバイスお願いします。



Dim n As Integer = -1

   
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        TextBox1.Text = ""

        Const qfile As String = "c:\1test.txt"
        Dim str() As String
        Dim lines As Integer
    

        lines = File.ReadAllLines(qfile).Length
        ReDim str(lines - 1)

        Dim sr As StreamReader = New StreamReader(qfile, Encoding.Default)


        n += 1
        For i As Integer = 0 To n
            If i < lines - 1 Then

                str(i) = sr.ReadLine()

                TextBox1.Text += str(i) + vbCrLf
            Else
                MessageBox.Show("終了")
            End If
           
        Next


        sr.Close()




    End Sub

編集 削除
GOD  2009-10-09 16:17:57  No: 146366  IP: 192.*.*.*

> TextBox1.Text += str(i) + vbCrLf
>
は TextBox1.AppendText(str(i) + vbCrLf) とすれば速度が向上しますよ。

編集 削除
九十九  2009-10-10 12:09:57  No: 146367  IP: 192.*.*.*

有り難うございました。

編集 削除
九十九  2009-10-12 09:32:15  No: 146368  IP: 192.*.*.*

蒸し返すようですが  If i < lines - 1 Thenは

If i < lines  Thenの間違いですね

  n += 1
        For i As Integer = 0 To n
            If i < lines - 1 Then

                str(i) = sr.ReadLine()

                TextBox1.Text += str(i) + vbCrLf
            Else
                MessageBox.Show("終了")
            End If

編集 削除