- 締切済み
「パス名が無効です」の発生原因
客先に納入したVBのプログラムなのですが、先日「75:パス名が無効です」のエラーが発生しました。 エラーが発生した部分はファイルをオープンし、読み込む処理を行っているところです。 このファイルは他のプログラムからもアクセスすることがあるためオープン時にロックして処理を行っています。 「55:ファイルは既に開かれています」や「70:書き込み出来ません」のエラーが発生することは分かっていたのでエラートラップを仕込んであります。 以下にその処理を抜粋しました。 intFileNo = FreeFile() Open strFileName For Random Lock Read Write As #intFileNo Len = Len(udtHeader) …(ここにエラートラップ処理が記述してあります) Get #intFileNo, 1, udtHeader close ※strFileNameには読込対象となるファイル名が格納されます。iniファイルから読み込んだ値と固定文字列から生成しているので空白になっていたりすることは考えられません。 ※udtHeaderはレコードで読み書きするためのユーザ定義型変数です。 上に記述した他のプログラムも同様の処理でファイルアクセスを行っています。 ファイルオープン前にファイルの有無チェックは行っています。 この中の処理で「パス名が無効です」が発生する要因が分からず困っています。 自分だけではなく他のプログラムもアクセスすることが要因としてあるだろうとは思うのですが、どのような状況になれば発生するかが分かりません。 もし、なにか分かる方がいらっしゃいましたらご教授お願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- hisappy
- ベストアンサー率46% (184/392)
回答No.4
- ProKaseifu
- ベストアンサー率51% (98/192)
回答No.3
- ProKaseifu
- ベストアンサー率51% (98/192)
回答No.2
- A88No8
- ベストアンサー率52% (836/1606)
回答No.1
補足
回答ありがとうございます。 Openするファイルのパスにスペースは入っていませんし、文字数も30字程度なので問題ありません。 既に存在しているファイルに対して処理を行っているので、作成可能ファイル数の上限は大丈夫です。 連続稼働していて、他のプログラムからも同じファイルをアクセスしているためにメモリを破壊してしまうような可能性があるのでしょうか? 何日かはメンテナンスで停止することもありますが、3年間ほど稼働し続けている状態で今までに一回も発生しておらず、発生直前の1秒前にも同じ処理を行っていますが、まったく問題ありませんでした。 メモリが破壊されてしまう可能性を検証することを考えてみます。