質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

1回答

719閲覧

テキストファイルの読み出し、処理

tktk098

総合スコア0

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2020/08/28 10:07

前提・実現したいこと

お世話になります。
VB.NETを使用しています。
ご回答、アドバイスの程宜しくお願い致します。

以下実現したい内容です。

テキストファイルを1行ずつ読み出し、読みだした文字列がある条件を満たしていれば
その文字列を処理し、処理結果を配列に格納する。
条件を満たしていない行はスルー。ファイル内全ての行を読み出したら終了する。

現状、ネットで検索したら1行ずつ読み取るプログラムをサイトに掲載して下さっている
方がいたので、それを参考に組んでいる。

発生している問題・エラーメッセージ

DBG用最後結果を表示させているが、その結果の値が00となり、表示するはずの値と異なる。

読み出すテキストファイルの中身は以下のような感じ(例)

xyz abcde:xxxx 0012500000300 abcde:xxxx 0012500001000 abcde:xxxx 0030000000300 xyz abcde:xxxx 0012500000300

上記のような文字列の中で:xxxxが入ってる行だけ処理→結果格納
行数は不定。

該当のソースコード

VBNET

1Imports System.IO 2Imports System.Text 3 4 5Public Class Form5 6 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 7 8 9 Dim FilePath As String = TextBox1.Text 'textbox1に入力されたパス内にあるtxtファイルを読み出す 10 Dim ExtensionName As String 11 Dim RLine As String 12 Dim str As String = String.Empty 13 Dim rd(1000) As Single '最終的に欲しい処理結果 14 Dim n As Integer 15 Dim aaa, bbb, ccc As String 16 17 18 n = 0 19 20 Try 21 22 ExtensionName = Path.GetExtension(FilePath) 23 24 If ExtensionName = ".txt" Then 25 26 Using sr As New StreamReader(FilePath, Encoding.GetEncoding("Shift_JIS")) 27 28 RLine = sr.ReadLine() 29 30 Do While RLine IsNot Nothing 31 32 str &= RLine & ControlChars.NewLine 33 34 RLine = sr.ReadLine() 35 36 If InStr(str, "xxxx") > 0 Then '読みだした文字列の中にxxxxという文字列があった場合以下の処理を行う 37 aaa = Mid(str, InStrRev(str, "xxxx") + 6) 'xxxxという文字を基準にして~所望の部分を切り取り 38 bbb = aaa.Substring(0, 8) '文字列のセパレート 39 ccc = aaa.Substring(8, 5) '文字列のセパレート 40 rd(n) = Convert.ToInt32(ccc / 16) / Convert.ToInt32(bbb / 16) '変換&計算処理 41 rd(n) = Math.Round(rd(n), MidpointRounding.AwayFromZero) '桁丸め 42 n = n + 1 'nカウントアップし次へ 43 Else 44 45 End If 46 47 Loop 48 49 End Using 50 51 End If 52 53 Catch ex As IO.FileNotFoundException 54 55 MsgBox("ファイルが見つかりません。") 56 57 Catch ex As Exception 58 MsgBox(Err.Description) 59 60 61 End Try 62 63 TextBox2.Text = rd(1) 'DBG用に最後テキストボックスにrd(1)を表示させている 64 65 66 67 End Sub 68 69End Class

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/08/28 10:13

DBG というのはドラゴンボールの新作ですか?
退会済みユーザー

退会済みユーザー

2020/08/28 10:35

デバッガを使ってステップ実行しながら変数の中身をチェックするなどしてみましたか?
guest

回答1

0

チュートリアル: Visual Basic コードをデバッグする - Visual Studio | Microsoft Docs

ここの、
デバッガーを起動する
という項目以降を読んで、ブレークポイントの設定、そしてステップ実行、その都度の変数の内容の参照などを行い、どこのどういうコードで動作がおかしくなるのか、変数の内容がおかしくなるのかを調べていきましょう

投稿2020/08/28 14:35

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問