0

次のような情報を持つリスト ボックスで txt ファイルを開こうとしています。

11111\George Baker\825.50
22222\Jane Doe\563.75

分割方式を使用しようとしているので、表示時にデータが分割されます。

リストボックスのデータをテキストファイルとまったく同じように表示する場所がありますが、正しく分割して必要な情報を表示することはできません:

Number: 11111  Name: George Baker  Balance: 825.50
Number: 22222  Name: Jane Doe  Balance 563.75

これが私がこれまでに持っているコードです:

Public Function GetData() As Boolean

    Dim streamer As StreamReader = Nothing
    LastError = String.Empty
    Dim fields() As String

    Try
        streamer = OpenText("C:\----accounts.txt")
        While Not streamer.EndOfStream
            Dim line As String = streamer.ReadLine()
            fields = line.Split("\"c)
            number = fields(0)
            name = fields(1)
            balance = fields(2)
        End While
        lstAccounts.Items.Add("Number: " & fields(0).Trim() &
                                         "Name: " & fields(1).Trim() &
                                        "Balance: $" & fields(2).Trim())
        LastError = "File not found"
        Return False
    Catch ex As Exception
        LastError = ex.Message
        Return False
    Finally
        If streamer IsNot Nothing Then streamer.Close()
    End Try

    Return False

End Function

変えたのがこれです。

これは、アカウント クラスにあります。フォームの読み込み時にリスト ボックスに読み込みたいと思います。

System.IO と System.IO.File の両方をインポートしました。

また、他の例では、多くのファイルパスが「..\」を使用して一部のディレクトリを短縮しているのを見ています。ソリューションと同じフォルダにありますが、それを短縮する方法はありますか? (また、スペースを節約するために上に貼り付けたコードに完全なファイルパスを含めませんでした。長かったです...笑)

4

1 に答える 1

1

fields必要な文字列を記述し、配列の対応する位置 (ゼロから始まる)を追加する必要があります。ここにサンプルコードがあります:

  While Not streamer.EndOfStream
      Dim line As String = streamer.ReadLine()
      If (line IsNot Nothing) Then
         Dim fields() As String = line.Split("\"c)
         If (fields.Length = 3) Then
            lstAccounts.Items.Add("Number: " & fields(0).Trim() & "Name: " & fields(1).Trim() & "Balance: " & fields(2).Trim())
        End If
     End If
 End While    

パスに関しては、実行可能ファイルと同じフォルダーにある場合は、相対パスに依存する可能性があります (たとえば、同じフォルダーにある場合はファイル名、フォルダー内にある場合は thisfolder\filename など)。ただし、これは状況によっては問題を引き起こす可能性があります (絶対パスに依存する方が常に安全です)。もう 1 つのオプションは、アプリケーションのディレクトリを .NET プロパティ (例: Environment.CurrentDirectory) から取得することです。

于 2013-08-31T22:42:21.647 に答える