環境はVB6です。
ファイル処理に Open 〜 Close を使っているのですが、
Open FilePath For Input As #FileNo
Line Input #FileNo, Data
Close #FileNo
という書き方が一般的にあります。
FileNoという変数の前に#をつけているコードとつけていないコードをよく
サンプルなどで見かけるのですが、この#の意味がわかりません。
#をつけたほうがいいのですか?教えてください。
同じ話題が過去にもあったような気がしますね。
たとえば、
Dim iFileNo as Integer
iFileNo = FreeFile
Open FilePath For Input As iFileNo
Line Input #iFileNo , Data
Close iFileNo
となります。
Open/Closeのときは、#はいらないみたいですね。
あと、できるだけファイルI/Oを利用する場合、
FreeFile関数で、ファイル番号を取得しましょう
昔のBASICでは INPUTやPRINTは #ファイル番号 が付いていれば指定ファイルの
読み書きで、無い場合は端末(画面とキーボード)の入出力だったのです。
つまり、
PRINT 1,"ABC"
→ 画面に 1 と "ABC" を出力(今のVBにこの機能はありません。Label等のコントロールを介して画面に表示するのが一般的)
PRINT #1,"ABC"
→ ファイル #1 に "ABC" を出力(これは今のVBでも同じ)
ということです。また、OPENやCLOSEはファイル処理専用命令で# を省略しても意味が違うことにはならないので省略可能となっていることが多かったようです。
推測ですが、現在のVBで PRINT で # が必要なのは、昔の #無しのPRINT命令を含むのソースコードをそのまま使った場合にコンパイルエラーが出る事を意図した仕様なのだと思います。
> PRINT 1,"ABC"
> → 画面に 1 と "ABC" を出力(今のVBにこの機能はありません。Label等のコントロールを介して画面に表示するのが一般的)
VB6でも、Printメソッドは使えますよね。
Option Explicit
Private Sub Command1_Click()
Print 1, "ABC"
End Sub
皆さんいろいろとありがとうございます。
勉強になりました。
> VB6でも、Printメソッドは使えますよね
Debug,Formなどのメソッドとして残っていましたね。
すっかり忘れていました。 orz
#もう歳なのかなぁ
ツイート | ![]() |