tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 構造体をCSVへ出力の件
投稿日: 2016/01/30(Sat) 22:57
投稿者トミー
こんばんは。
VB2005〜2013以降様々な環境を使っています。
OSはVista〜Win8.1などです。

構造体に格納されているすべての値をCSVに出力する際、
構造体の項目数が仕様変更で変わってもいいように
ソースを直したいのですが・・・

例えば、For Each でできそうな気がしましたが
探しても見つかりませんでした。

CSV出力のところをどのように変えたらいいでしょうか・・・


構造体の項目数が変わっても


    Private St() As StXyz
    Private Structure StXyz
        '↓項目数が変更しても
        Dim colkey As String
        Dim colName As String
        Dim colAddress As String
        Dim colNickname As String
        Dim colMemo As String
        '↑項目数が変更しても
    End Structure
    
    '(中略)
    
    Private sub CSVOutput()
        Dim fileName As String = "csvTest.csv"              '読み出しファイルのパス
        Dim fileName2 As String = "csvTest2.csv"            '書込みファイルのパス
        Dim fileNo As Integer = FreeFile()                  'ファイル番号を取得
        Dim fileNo2 As Integer = FreeFile()                  'ファイル番号を取得
        Dim n As Integer = 0
        Dim m As Integer = 0

        FileOpen(fileNo, fileName, OpenMode.Input)
        Do Until EOF(fileNo)        'ファイルの最後までループ
            ReDim Preserve St(n)
            ' CSV各項目をセット
            Input(fileNo, St(n).colkey)
            Input(fileNo, St(n).colName)
            Input(fileNo, St(n).colAddress)
            Input(fileNo, St(n).colNickname)
            Input(fileNo, St(n).colMemo)
            'カウンタ追加
            n += 1
        Loop
        FileClose(fileNo)
        
        '(中略)St(n).colkey などを変換処理して違う値が代入されたとする
        
        'ファイルを出力モードで開く
        FileOpen(fileNo2, fileName2, OpenMode.Output)
        Do while m < n
            ' CSV各項目をセット
            '↓ここをどう変えれば良いか判らないです
            Write(fileNo2, St(m).colkey)        'ファイルへ書き込む
            Write(fileNo2, St(m).colName)
            Write(fileNo2, St(m).colAddress)
            Write(fileNo2, St(m).colNickname)
            WriteLine(fileNo2, St(m).colMemo)   '最後の列はWriteLineで書き込む
            '↑ここをどう変えれば良いか判らないです
            'カウンタ追加
            m += 1
        Loop
        FileClose(fileNo2)   'ファイルを閉じる
   End Sub


よろしくご教示お願いいたします。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。