こんばんわ。開発環境は.NETです。
困っています。教えてください。
FileOpen(1, "D:" & "2005月9月17日"& 商品(9, h).コード & ".text", OpenMode.Append)
PrintLine(1, "はい!元気です " )
FileClose(1)
[ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。]というエラーがでます。
配列をファイル名に代入するところなのですが、最初の途中まで
は成功するのですが、すぐにエラーが出ます。
なぜでしょうか?どなたかご存知ですか?
※"配列をファイル名に代入" が意味不明。
"最初の途中まで" が状況説明になってない。
という点を除けば、
ん?
FileOpen(1, "D:\"
というオチ?
"D:" & "2005月9月17日"& 商品(9, h).コード & ".text" =ここまでがファイル名なんですが、 商品(9, h).コードところに
このコードの前に作った配列をforの繰り返し処理
でどんどん入れていきます。
そのたびにファイルが作成されていくわけですが、配列自体はなんども
確かめて作成されているのは確認しています。
ですが繰り返し代入する途中でエラーが出てしまうのです。
ここを配列をいれず固定の文字を代入すると思惑通り動作します。
ですが沢山のテキストを作らないといけないのでテキスト名は毎回
変えないといけないのです。
確かに、\も抜けていましたが現象自体は変わりませんでした。
この説明でわかりますかね?
うーん…
では、
・FileOpen()する直前で、開くファイル名を視認してみる。
というのはどうでしょう?
ちょっといっている意味がわかりませんが、なにか具体的な方法が分かる方はいませんか〜!
変数hに代入されている数値が配列の許容を超えてるとか
一応動的配列なのです。
>[ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。]というエラーがでます。
FileOpen時に、このエラーが出る、という事ですよね。
それならば、FileOpenに渡すパス名を、いったん
Dim FilePath As String
のような文字列変数にうけてみて、どのようなパスを指定した時に、
そのエラーが発生しているのかを確認するところから始めないと。
たとえば……。
Dim FilePath As String
Try
:
:
'ファイルへの書き込み処理
FilePath = "D:\2005月9月17日" & 商品(9, h).コード & ".text"
FileOpen(1, FilePath, OpenMode.Append)
PrintLine(1, "はい!元気です ")
:
:
Catch ex As Exception
'エラーが発生した場合の処理
MessageBox.Show("エラー! " & FilePath)
MessageBox.Show(ex.ToString())
Finally
'エラーの有無に関わらず、常に実行させたい処理
FileClose(1)
End Try
こんばんわ。
どのようなパスを指定した時に、
そのエラーが発生しているのかを確認するところから始めないと。
>>多分どのパスの時もエラーがでると思います。
データ内容が変わっても数回正常に実行して
エラーがでますから。文字列ではなく数列にここを変えると
上手く動作しました。
なんなんでしょう?
この動きの違い
なんかレスできない間に進んでいますね…
とりあえず、色々な意見が出ていますから少しは参考にしてみましたでしょか?
現状の最大の問題は、
・真矢さんがバグの元を追求していない
ということです。
なぜ ">>多分どのパスの時もエラーがでると思います。" と言い切れるのですか?
> データ内容が変わっても数回正常に実行してエラーがでますから。
> 文字列ではなく数列にここを変えると上手く動作しました。
"どのパスの時もエラーがでる"なら、"数列にここを変えて"も"エラーが出ないとおかしい"ですよね?
何が違うんでしょうね?
少し考えれば、「実際に使っている値」に問題があると思いつきますが…
→もしくはもっと深い罠かも…
> なんなんでしょう?
> この動きの違い
そこが問題ですね。再現可能なソースも、情報も不足しています。
今一番問題に近いのは真矢さん自身です。
頑張ってください。
解決しました。取得しているコードの文字列が条件分岐のところの
構文が正確に取得できない構文になっておりそこを必ず取得できる
構文に変更したら普通に動作するようになりました。
お騒がせして申し訳ありませんでした。
ツイート | ![]() |