Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
ファイルを読み込んで配列に格納する方法
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30656#CommentId84764
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
はち
 (社会人)
投稿日時
2021/10/18 12:12:28
対応いただきありがとうございます。
当方の情報が不明確で申し訳ありません.下記のようなデータを読み込もうとしております.
下記のようなVB6の命令文でファイルに書き込まれた下記のようなデータを読み込もうとしております.
Print #1, X(DT), Y(DT), U1(DT), -U2(DT)・・・実際は半角文字
30.34137 37.00964 0.766 -0.116
15.51356 36.96014 8.699 0.717
33.5104 36.91454 8.216 0.461
-2.653893 36.87263 12.746 -0.426
実際のデータの行頭はすべてそろっております.
配列の番号が0ではないのは,私の癖で1から配列をしようしています.VB.NETでは0からはじめるのであればそれに従う必要がありますね.
配列の数ですが,VB6では,想定して適当な大きさの配列を宣言しておりました.VB6で作成したプログラムであれば,以下のようにしておりました.
Dim X(20000000) As Single
Dim Y(20000000) As Single
Dim UD1(20000000) As Single
Dim UD2(20000000) As Single
今回お示しいただいた,プログラムはデータの個数を予めカウントし,それを用いて配列宣言をするのですね.
頂いたプログラムをコピペ―ストして,適当に変えさせていただきました.その結果,いくつかのコマンドに赤の波下線がついており,エラー?なのかと思われます.
ご教示いただければ幸いです。よろしくお願いいたします。
'ファイル名と文字コードは適宜修正してください
Dim fileName As String = Label2.Text
Dim enc As Encoding = Encoding.GetEncoding("Shift_JIS")・・・Encordingが定義されていません
'列ごとに区切る処理です。
Dim q = (
From s In File.ReadLines(fileName, enc)・・・・ファイルは定義されていません.
Let ary = s.Replace(" ", vbTab).Replace(" ", vbTab).Split(
New String() {vbTab}, StringSplitOptions.RemoveEmptyEntries)
Where ary.Length = 4 '←4列以外の行も許容する場合はこのWhereを省きます
Select ary).Select(
Function(Columns, RowIndex) New With {Key RowIndex, Columns}
).ToArray()
'件数が分かったので、配列4つを初期化しておき…
Dim upperIndex As Integer = q.Length - 1
Dim X(upperIndex), Y(upperIndex), UD1(upperIndex), UD2(upperIndex) As Single
'整数に変換しながら、文字列配列から整数配列に代入しなおします(変換失敗時は 0 を代入)
For Each X In q
Single.TryParse(X.Columns(0), A(X.RowIndex))・・・・Columns,RowindexはSngleのメンバーではありません.
Single.TryParse(X.Columns(1), B(X.RowIndex))
Single.TryParse(X.Columns(2), C(X.RowIndex))
Single.TryParse(X.Columns(3), D(X.RowIndex))
Next