VB.NET FileOpenしたファイルの内容を文字数を指定して読み込む への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 Yoko  (社会人)
投稿日時
2021/10/5 22:11:29
VB.NETについての質問です。FileOpen(FileNum,"D:\a.txt",OpenMode.Input)で開いたa.txtには50文字の文字列を記述しています。このa.txtの内容を先頭から40文字、Input関数で読みだそうとしたら構文エラー(式は値を生成しません)が発生します。
構文は b = Input(40,FileNum)と記述しています(bは文字型で宣言しています)。VB6.0では出来たのですがVB.NETではシーケンシャルファイルの指定文字数の読出しは出来ないのでしょうか??よろしくお願いします。
構文は b = Input(40,FileNum)と記述しています(bは文字型で宣言しています)。VB6.0では出来たのですがVB.NETではシーケンシャルファイルの指定文字数の読出しは出来ないのでしょうか??よろしくお願いします。
> 構文エラー(式は値を生成しません)が発生します。
Function と間違えて、Sub なメソッドの戻り値を受け取ろうとしてはいませんか?
たとえば下記のように呼び出した場合、「BC30491:式は値を生成しません。」のエラーとなります。
> 構文は b = Input(40,FileNum)と記述しています(bは文字型で宣言しています)
文字型(Dim b As Char)は、1 文字のみを扱う型ですので、今回は
文字列型(Dim b As String) を使うべきですね。
> シーケンシャルファイルの指定文字数の読出しは出来ないのでしょうか??
できますよ。
ただ、VB6 互換命令である FileOpen / FileClose を使う方法よりも、
.NET らしく、System.IO.File を使う方法をお奨めしておきます。
たとえばデータを一行ずつ読み込む場合、従来の Line Input # ステートメントに相当する
LineInput メソッドを利用することができますが、現在はそれを使うよりも、
File.ReadAllLines メソッドあるいは File.ReadLines メソッドを用いる方が扱いやすいと思います。
(あるいは、FileStream を使うとか)