「現在のファイルパス」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は下記のアドレスを返します。
C:\LabVIEW\myapp.vi
- EXEで実行する場合、「現在のVIのパス(Current VI's Path)」VIは下記のアドレスを返します。
C:\LabVIEW\myapp.exe\myapp.vi
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 バージョン8.5の場合

関連リンク: 技術サポートデータベース 18RDJ60O: Why Does My Executable Not Work When Using the Current VI's Path Constant?
添付:
報告日時: 01/30/2008
最終更新日: 08/08/2011
ドキュメントID: 4HT22CDB
Other Support Options
Ask the NI Community
Collaborate with other users in our discussion forums
Request Support from an Engineer
A valid service agreement may be required, and support options vary by country.