2016-08-02 121 views
0

我使用相應的.dll文件將相當大的應用程序作爲.exe文件App55.exe進行分發。我希望爲系統管理員(目前爲我)提供執行命令行指令的工具,例如VALIDATE DATABASE,或者專門打開其中一個表並重新編制索引,理想情況下是在此應用程序中。 這是可能的 - 不包括代碼來專門打開所有表& c。有沒有人可能有一個實用的工具。Visual Foxpro:在.exe文件中提供命令行工具

謝謝

回答

1

我有它作爲一個工具,但該實用程序也有一些代碼,我不想透露:(我不能只給出這個原因,項目,但是它是相當簡單你應該做什麼:

創建一個項目,其中你有一個編輯框和一個命令按鈕,Editbox(說edtCode)是你編寫代碼的地方,當你點擊按鈕時,你的代碼將被編譯並運行這裏是點擊代碼:

Local lcCode, lcTemp 
lcCODE = thisform.edtCode.Value 
lcTemp = FORCEPATH(SYS(2015)+'.prg',SYS(2023)) 
STRTOFILE(m.lcSQL,m.lctemp) 
COMPILE (m.lcTemp) 
* on error do myErrHandler with ... 
DO (m.lcTemp) 
* on error 
Erase (m.lcTemp) 

PS:這將適用於VFP6 SP3及更高版本。

+0

謝謝採廷。我已經嘗試了類似的東西(省略了對lcSQL的參考),並且它完成了業務。我是否認爲COMPILE指令在那裏是爲了拾取錯誤,所以程序不會中途通過然後失敗:也就是說,程序在沒有COMPILE指令的情況下工作,只要沒有錯誤edtcode.value中的代碼? –

+0

不,你需要COMPILE命令,這是它的工作原理。 VFP不是一種類型化的語言,編譯會從你的意思上捕獲錯誤(do命令執行隱式編譯,但單獨執行)。 –

0

這是我在程序菜單中包含的內容: CodeBlock是一個運行時FoxPro解釋器。它允許您執行駐留在備註字段,文件或字符串中的未編譯代碼塊,即使在運行時環境中也是如此。

http://www.cycla.com/software/codeblock.htm

+0

自從VFP6 SP3以來,你不需要代碼塊,是嗎。 –

+0

謝謝埃迪。我看了你的網站,看到了大概的想法。事實上,在Internet Explorer下載CodeBlck.prg會導致我的機器出現404錯誤;但我想象它會做類似切廷的代碼。 –

0

我們做同樣的,我們創建一個假命令窗口(編輯框的)東西,當按下回車做加工的按鍵響應方法。如果選擇了一段文字,我們執行它;否則,執行最後一行輸入。我們使用EXECSCRIPT()來執行實際的執行。邏輯還有一點(例如,當不在'最後一行'時處理Enter鍵等),但這是一般的想法。

+0

謝謝LAK。我試過EXECSCRIPT(),它的工作原理。如果我只是想執行該指令,我相信ExecScript會將寫入保存到臨時文件中。但是,我認爲切廷的方法的優點在於,它允許在沒有實際執行腳本的情況下捕獲(某些)錯誤。 –

+0

當VFP嘗試編譯/運行臨時文件時,它可能會捕獲語法錯誤。在我們的例子中,我們只是捕獲錯誤(使用TRY ... CATCH)並顯示錯誤信息。 – LAK