Current VI’s Path 在轉成 .exe 檔後無法使用

想讀取Current Directory 的  Prefile.ini 檔內容,在 .vi檔時OK

但轉成 .exe檔時卻無法讀取,

要如何設定在 .exe檔才能讀取呢

 

 

 

你可以試著將 Current VI's Path.vi 接上一個 indicator 來觀查,
在建成執行檔 之前 及 之後 會有不一樣的結果。

試試看,並將結果告訴大家。

其實這算是labview的小bug(個人是這樣認為啦),在build成執行檔時,它會將所有sub VI包在執行檔下,所以你是c:\A\B.VI,包成執行檔可能就成為C:\A?.EXE\B.VI,這樣我們所得到的VI path就會出問題了,這是個小小的使用心得,有空再討論吧。

[QUOTE=Marco]其實這算是labview的小bug(個人是這樣認為啦),在build成執行檔時,它會將所有sub VI包在執行檔下,所以你是c:\A\B.VI,包成執行檔可能就成為C:\A\?.EXE\B.VI,這樣我們所得到的VI path就會出問題了,這是個小小的使用心得,有空再討論吧。[/QUOTE]

其實我們可以來想一想:

現在,在路徑 『 C:\Test\  』底下有
「A_Main.vi」、「B_Sub.vi」、「C_Sub.vi」三個 VIs
第一個為主程式,其餘為主程式所使用到的副程式。

其路徑為:
=> C:\Test\A_Main.vi
      C:\Test\B_Sub.vi
      C:\Test\C_Sub.vi

現在我們將「A_Main.vi」建成一個執行檔叫做「D_Exec.exe」
並放在『 D:\Test\  』

而在「A_Main.vi」的程式碼需要得到「B_Sub.vi」的路徑
(比方說在動態呼叫的情況下)
如果依照我們一般的認知會是
=> D:\Test\B_Sub.vi

然而『D:\Test\』是不存在「B_Sub.vi」的,
在這裡只有一個執行檔「D_Exec.exe」

在「D_Exec.exe」裡頭才有
「A_Main.vi」、「B_Sub.vi」、「C_Sub.vi」三個 VIs 存在

而正確的路徑應該是
=> D:\Test\D_Exec.exe\B_Sub.vi

所以 Marco 所提到的『C:\A\?.EXE\B.VI 』,
我想應該是可以理解的。

(雖然我自己第一次在用的時候,也發生同樣的情況 .....)

 

 

Airbolt 好厲害呢

我才短短幾句話,你可以寫的這樣詳細,看來我要好好學習學習了。

我還真是對不起發問的人呢。

感謝  Airbolt 與 Marco 二位前輩的幫忙,解決了小弟的困難

結果和你們所說的一樣

![](upload://yqe9a35RadY4SWXxume9rxrmNTZ.jpeg)

Marco 您客氣了,
我只是將自己知道的跟大家分享,
有機會你也可以跟大家分享在程式上的心得或是一些想法。

論壇本來就是集合大家的力量來讓大家有個學習、討論的空間
並且互相激發彼此創意的一個地方。               

另外,謝謝 Jertsong 幫忙做的範例,
這樣大家可以更了解 相對路徑在 執行檔 與 VI 上的差異。

Airbolt38467.8172106482