線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2117
推到 Plurk!
推到 Facebook!

編譯執行時出現Eexternal exception EEFFACE

尚未結案
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-12-04 09:34:41 IP:114.137.xxx.xxx 訂閱
使用BCB 2010
我先敘述我程式的內容
我利用動態的方式產生TPopupMenu,部分code如下:

[code cpp]
for(int i = 0 ; i < 10; i )
{
TMenuItem *menu=new TMenuItem(this);
char sc=65 i;
menu->Caption=ExePath[i] "(&" sc ")"; //ExePath[i]為外部檔案的路徑
menu->Tag=i;

PopupMenu_Dynamic->Items->Add(menu);
menu-> PopupMenuItemsClick;
}
[/code]

我在PopupMenu上顯示檔案的路徑,點選Item就會執行該程式
[code cpp]
if(ClickedItem->Tag < iMenuCount)
{
if(Parameter[ClickedItem->Tag] != "")
{
//方法一:
ShellExecute(Handle,"open",ExePath[ClickedItem->Tag].c_str(),Parameter[ClickedItem->Tag].c_str(),NULL,SW_SHOWNORMAL);

//方法二:
AnsiString ex;
ex = ExePath[ClickedItem->Tag] " " Parameter[ClickedItem->Tag];
WinExec(ex.c_str(), SW_SHOW);
}
}
[/code]

一開始我使用ShellExecute的方式,只在是在編譯階段的執行(BCB上直接按F9),並點選任一個Item就會出現Eexternal exception EEFFACE的錯誤,而且BCB整個當掉,必須用工作管理員強制關閉

但是,我單獨執行這個程式,一切功能都正常,不會出現任何錯誤

因為我覺得是ShellExecute的問題,我就找了另一個替代的API - WinExec
想不到用WinExec就完全正常

雖然問題暫時解決,我還是想知道是什麼原因導致這項例外的產生?

謝謝各位

編輯記錄
GGL 重新編輯於 2010-12-03 18:35:38, 註解 無‧
GGL 重新編輯於 2010-12-03 18:36:54, 註解 無‧
aftcast
站務副站長


發表:81
回覆:1482
積分:1762
註冊:2002-11-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-12-04 11:23:38 IP:220.135.xxx.xxx 訂閱
Please try

ShellExecuteW(Handle,L"open",ExePath[ClickedItem->Tag].c_str(),Parameter[ClickedItem->Tag].c_str(),NULL,SW_SHOWNORMAL);

i just guess this may cause a problem, though i do not have bcb 2010.
------



蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
系統時間:2017-12-13 5:40:24
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!