今更ながら
今日は13日の金曜日!
な、なにかあるか?!?!
基本は曇り。
夕方前に、太陽が見えた。
寒い寒い...
3日前に、同じソースなのに、動きが違うっていう記事を書いた。
今回も同じような感じで、同じファイルを読み込んでいるのに、Windows起動直後と、その後ゴチャゴチャやっている時とで、出てくる結果が違う、という現象に出くわした。
さっぱりわからん!
Windows起動直後で環境がきちんと整っていないから、違う結果が出てくるのだろうか?と思ったけれど、どうも違うよう。
あれやこれやと検証した結果、原因がわかった。
僕は、Windows起動時に起動させたいプログラムに関しては、基本的にはWindows標準の「スタートアップ」は使用していない。
フリーソフトで、自動起動を管理してくれるソフトを使わせてもらっている。
それがヒントというか、原因というか。
いや、原因は・・・(苦笑)
僕が作成したプログラムの中で、ファイルを読み込んでいる。
それは、実行ファイルと同じ場所に存在している。
普通に起動すれば何も問題ない。
が、その自動起動するソフト経由で起動すると、そのファイルを読み込んでくれない、というのがわかった。
どうやら、その自動起動するプログラムが存在するフォルダが「勝手に」割り当てられ、存在しないファイル扱いになってしまっていたようだ。
こういう感じ。
自動起動するソフト=Aフォルダ\AA.exe
僕のプログラム=Bフォルダ\B.exeとC.txt
プログラムの中の記述は、「.\C.txt」。つまり、実行ファイルと同じフォルダにあるという認識での設定。
そういう記述だと、B.exeを直接起動せず、自動起動するソフト経由だと、C.txtは、Aフォルダ\C.txtとなってしまう。
それがわかったので、プログラムの中で、B.exeが起動したフォルダをC.txtにきちんと割り当てるようにした。
すると、問題なく起動した!
もうちょっと調べていくと、なるほどな、ということがわかった。
ショートカットと同じ仕組みなので、それで説明。
ショートカットを作成すると、こういう感じになる。
ポイントは、「作業フォルダ-」というもの。
これは、ほとんどの場合、そのEXEファイルと同じフォルダになる。
今回のように、僕のプログラムの最初の記述「.\C.txt」であれば、「作業フォルダー」がきちんと設定されていれば、OSが「Bフォルダ\C.txt」にしてくれるので問題ない。
が、ここを空白で、「.\C.txt」という記述の状態だと、きちんとフォルダが記述されていないので、そんなファイルないよ、ということになる。
だから、B.exeから呼び出そうとしても、C.txtは、同じフォルダにあっても、行方不明扱いとなってしまう。
自動起動するソフトの中にも、きちんと、作業フォルダを設定するところがあり、そこをきちんと設定すれば、「.\C.txt」でも問題なく動いた。
そう言えば、ショートカットを作成して、そのソフトを起動しようとしても、起動しないものがあったことがある。
思い起こすと、確かに、この作業フォルダーが空欄だったわ。
僕のプログラムと同じように、そのプログラムも、設定ファイルや読み込みファイルを見失って、読み込めなかったんだね。
なーるほど!
Windowsを結構な年数使ってきているけれど、今更ながら、「作業フォルダー」の意味合い、役割を知ったのであった。
それもそうなんだけれど、プログラムの中で、きちんとパスを通すようにしないとダメだね。
いい勉強になった。
| 固定リンク
「パソコン・インターネット」カテゴリの記事
- とうとう来てしまった(2024.12.04)
- 定例のアップデート(2024.11.28)
- 今日はどうだったか(2024.11.22)
- 何かが降ってきた(2024.11.21)
- 画面内の文字をテキスト化(2024.11.19)
コメント