Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
ファイルからデータを読み込んで計算式に当てはめるプログラム
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=9458#CommentId13647
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
aaaa
 (学生)
投稿日時
2009/11/27 00:11:32
すいません
完成するまで1週間以上かかったので、計算結果が上手くいった時うれしくて先に報告だけでもと思ったのですが失礼な行為だったようですね。
以下が完成したコードです。
'実験で得られる波長(250.19,…etc)のファイル読み込み
Dim reader As New IO.StreamReader("C:\プログラミング\2.txt", System.Text.Encoding.GetEncoding("Shift-JIS"))
'企業から送られてきた波長(250~2500)とそれに対応するデータのファイル読み込み
Dim file As New IO.StreamReader("C:\プログラミング\ファイル2.csv", System.Text.Encoding.GetEncoding("Shift-JIS"))
'結果をcsvファイルに書き込み
Dim Writer As New IO.StreamWriter("C:\キャリブレーション.csv")
Dim items() As String 'ファイル2の波長とデータを切り分けて入れる配列
Dim kk(2250, 1) As Decimal '上で切り分けたのををさらに入れる配列
Dim Line As String
Dim a As String
Dim b, d, f, y As Decimal
Dim c, i, j As Integer
Line = file.ReadLine 'ファイル2を1行読み込み
a = reader.ReadLine '2を1行読み込み
j = -1 'jの初期値
'ファイル2を切り分けて配列に入る作業をファイルの最後まで繰り返す
Do While Line IsNot Nothing
items = Line.Split(",")
d = Val(items(0))
f = Val(items(1))
'それをさらに2250×2行列の配列に入れる
j = j + 1
kk(j, 0) = d
kk(j, 1) = f
Line = file.ReadLine
Loop
'2(実験で得られる波長のファイル)を最後まで繰り返す
Do While a IsNot Nothing
b = Val(a)
c = Int(b) '実験で得られる波長の小数点以下を切り捨てたもの
i = c + 1 '上の波長より1だけ大きい波長
'計算式
y = (kk((i - 250), 1) - kk((c - 250), 1)) * (b - c) + kk((c - 250), 1)
'例:最初の250.19の場合 (kk(1,1)-kk(0,1))×(250.19-250)+kk(0,1) = (0.967 -0.965)×0.19+0.965=0.96662
TextBox1.AppendText(y & vbCrLf) 'テキストboxに追加
a = reader.ReadLine
Loop
Writer.WriteLine(TextBox1.Text) '上の結果をcsv形式で書き込む
'ファイルを閉じる
reader.Close()
file.Close()
Writer.Close()
以上のようになりました。