使用 Current VI's Path 的執行檔出現 Error 7

更新 Oct 19, 2023

產品資訊

軟體

  • LabVIEW Application Builder Module

問題敘述

若要取得現在執行程式的資料夾位置,通常使用 Current VI’s Path function 搭配 Strip Path function 即可。可是當我把程式製作成執行檔後,取得到的資料夾位置就會不正確而發生錯誤,像是 Error 7 occurred at New File。

請問為什麼會這樣呢?我該如何取得正確的資料夾位置?

解決方案

在 LabVIEW 2009 及更高版本中,您可以使用 Application Directory VI。

如果從執行檔呼叫此 VI,則此 VI 會回傳執行檔所在資料夾的路徑。如果從開發環境中呼叫此 VI 並且此 VI 是從 LabVIEW 專案 (.lvproj) 中打開,則此 VI 會回傳專案所在資料夾的路徑。如果專案尚未存檔,則此 VI 會回傳 <Not a Path>。如果 top-level VI 不是從專案中打開的,則此 VI 會回傳 top-level VI 所在資料夾的路徑。如果 VI 未存檔,則此 VI 會回傳 <Not a Path>。

對於 LabVIEW 2009 之前的版本,您可以使用 Application Property Node 來取得該程式是否為執行檔,進而判斷要使用一次或兩次 Strip Path function。

另一個選項是使用 Application Directory Property Node 來得到包含執行檔的資料夾路徑。

請注意,最左邊的 VI 是 Open Application Reference,而不是 Open VI Reference。此外,由於此屬性是搜尋執行中的 LabVIEW 執行檔,因此在開發期間,此屬性將回傳目前 LabVIEW 實例的路徑。

 

相關資訊

Current VI's Path function 回傳包含 VI 名稱的完整路徑。此路徑根據 VI 是在 LabVIEW 開發環境中運行還是在執行檔中執行而有所不同。 LabVIEW 將跟執行檔有關的所有 VI 都打包到執行檔的下一層。

假設有一個叫做 Application.vi 的 VI 位於硬碟的根目錄 (例如 C:\) 中,在 LabVIEW 開發環境中,Current VI's Path function 回傳:
C:\Application.vi

現在考慮將相同的 VI 包進執行檔 MyApplication.exe 中。當此應用程式執行時,Current VI's Path function 回傳:
C:\MyApplication.exe\Application.vi

從上面的不同文件路徑可以發現,根據您是在開發環境中執行還是在執行檔中執行,您需要以不同方式去除路徑。


解決此問題的另一個方法是在路徑中搜尋 .exe。如果路徑中不存在 .exe,則只需使用 Strip Path function 一次即可得到所在資料夾路徑。如果 .exe 存在於路徑中,則必須使用 Strip Path function 兩次來獲得所在資料夾路徑。