「現在のファイルパス」VIでVI上では正しいパスがEXE化すると動作しない理由



使用ソフトウェア:
使用ソフトウェア・バージョン: 7.0
使用ソフトウェア・バージョンに特化: N/A
二次のソフトウェア: N/A

問題:
VIをEXE化した場合、サブVIは常にMainVI と同一のフォルダにありますが、VIの場合とEXEの場合では、階層が異なってしまいます。どうすればどちらでも問題なく参照したいファイルを見つけ出せますか?

解決策:
LabVIEW の「現在のVIのパス(Current VI's Path)」VIは、EXE化した場合とVIの場合では返すパスが異なります。例えば、「C:\LabVIEW\」に「myapp.vi」と「myapp.exe」を保存したとします。

VIの場合、上記の「現在のVIのパス(Current VI's Path)」VIを「パスをストリップ(Strip Path)」でパスの最後の要素を1つ取り除く(ストリップ)すると、「C:\LabVIEW\」 になります。「C:\LabVIEW\」 はディレクトリですので、「ファイル/ディレクトリ情報(File/Directory Info)」VIの「ディレクトリ」出力はTrueを返します。Trueの場合は2度目のストリップは行いません。

EXEの場合、上記の「現在のVIのパス(Current VI's Path)」VIを「パスをストリップ(Strip Path)」で一度ストリップすると「C:\LabVIEW\myapp.exe」になります。例えば 「C:\LabVIEW\」 に 「myapp.vi」 と 「myapp.exe」 を保存したとします。EXE化させる際には、正しいフォルダ「C:\LabVIEW」にたどり着かせるために、フォルダをもう一つ多くストリップさせる必要があります。

上記問題の回避策として、下記のようにプログラミングします。

LabVIEW バージョン7.1の場合
LabVIEW 7.1におけるVIパス指定方法

LabVIEW バージョン8.5の場合
LabVIEW 8.5におけるVIパス指定方法



関連リンク:
技術サポートデータベース 18RDJ60O: Why Does My Executable Not Work When Using the Current VI's Path Constant?

添付:





報告日時: 01/30/2008
最終更新日: 08/08/2011
ドキュメントID: 4HT22CDB