vb6で開発しています。
FORM の LOAD 時に、2つのファイルを読んでいるのですが、同じことを順番になっているつもりなのに、2つめのファイルのLOOPのところでエラーが発生します。
'*** Read File 1 ***
FileName = CurDir + "File1.txt"
i = 0
Open FileName For Input As #1
Do Until EOF(1)
Line Input #1, csvData
ArrayData = Split(csvData, ",")
-----略-----
Loop
Close #1
'*** Read File 2 ***
FileName = CurDir + "File2.txt"
i = 0
Open FileName For Input As #2
Do Until EOF(1) ←ここで、エラーが出る。
Line Input #2, csvData
ArrayData = Split(csvData, ",")
-----略-----
Loop
Close #2
# エラーの内容ぐらいは書きましょう。
> Open FileName For Input As #2
> Do Until EOF(1) ←ここで、エラーが出る。
EOF関数に渡すファイル番号が間違っていませんか?
#2をOpenして#1を調べてる罠
FreeFile使って変数ぶっこんでやった方が
視認性上がる罠
ついでにクラスにしてカプセル化してしまうのが吉
大変申し訳ありません。エラーの内容は、
Line Input Run-time error '52';
Bad file name or number
です。通ってみたさんのおっしゃることがとっても納得なのですが、それを回避するには具体的にどのように記述したらよいでしょうか?
以下の、リンクを参照したらできました。
http://www.mitene.or.jp/~sugisita/net/vbnet_rep004.html
「魔界の仮面弁士 」さん「通ってみた」さん「葉月α 」さん「ガッ」さんさんありがとうございました。
EOFを調べればOpenステートメントとかFreeFile()との関連が見えてくるはず…
具体的な記述は、
それらをちゃんと見てから出ないと「危ない方向」に導きかねないです。
※ヒント:EOF(FileNumber)
んぅ…解決してよかったです。
頑張ってくださいw
>EOFを調べればOpenステートメントとかFreeFile()との関連が見えてくるはず…
>具体的な記述は、
>それらをちゃんと見てから出ないと「危ない方向」に導きかねないです。
賛成です。
初めの質問も、
>Do Until EOF(1) ←ここで、エラーが出る。
ここに問題があるのではなく、ファイル番号を変えている、
>Open FileName For Input As #2
ここに問題がありそう。
#2 -> #1と書けることに気が付くと、 i = 0 以下の構文が
上と全く同じになり、FileNameを渡すファンクションにしてしまえ、となり。
>ついでにクラスにしてカプセル化してしまうのが吉
となるわけですね。
一息には難しいかもしれないけど、Open Closeはしっかりおさえておきたい。
みなさん、ありがとうございます。FreeFile()もチェックしました。またいろいろ聞くかも知れませんが、よろしくお願いいたします。
ツイート | ![]() |