關於"紀錄錯誤訊息的方式" |
尚未結案
|
cliffpen
一般會員 發表:35 回覆:18 積分:15 註冊:2005-05-16 發送簡訊給我 |
|
powmien
初階會員 發表:27 回覆:80 積分:41 註冊:2004-10-20 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
cliffpen 您好: 就我的印象而言,應該是沒有現成的 API 可記錄您所描述的那種訊息,您所描述的 "錯誤訊息" 僅僅是一個 "字樣" 而已,而這個字樣是您自定的,跟系統並無直接的關連,並不會觸發系統的任何機制,應該是不會有任何 API 可以獲取或記錄該訊息的。 既然要記錄的訊息是自定的,那麼您不妨考慮將想要處理的動作,比照 MessageBox 的參數格式寫成自定函式,在自定函式中將顯示訊息與紀錄訊息的動作都寫進去,然後在所有要顯示提示訊息或錯誤訊息的位置,都改成呼叫這個自定函式,這樣子應該也會很方便的。 7 天天敲鍵盤 v 時時按滑鼠 8
|
andychang1690
資深會員 發表:20 回覆:694 積分:442 註冊:2003-03-14 發送簡訊給我 |
cliffpen:參考看看 http://delphi.ktop.com.tw/topic.php?topic_id=55876 【問題】關於錯誤訊息及Exception的處理? 答題得分者為:powerhowardchen http://delphi.ktop.com.tw/topic.php?topic_id=19843 [推薦] TApplication類的簡要說明 axsoft 版主 OnException: 當應用程序發生異常時.你也可以自定義一個異常處理過程而不用缺省的ShowException 自定義異常處理窗口 缺省異常處理窗口是用ShowException顯示的一個窗口,其標題為應用程序的Title.我們也可以自定義異常處理函數,以便對異常進行自定義的處理。 void __fastcall TForm1::FormCreate(TObject *Sender) { Application->OnException = HandleException; } void __fastcall TForm1::HandleException(TObject *Sender,SysUtils::Exception *E) { AnsiString errorstr="應用程序發生了錯誤.\n" E->Message; Application->MessageBox(errorstr.c_str(),"發生異常",MB_OK); } 把錯誤訊息紀錄下來? 使用FileCreate(),FileOpen(),FileSeek(),FileWrite(),FileClose() 等方式皆可。 請參考!Andy Chang
------
Andy Chang |
cliffpen
一般會員 發表:35 回覆:18 積分:15 註冊:2005-05-16 發送簡訊給我 |
關於前兩位大大的建議,在下有寫出了如下的程式:
void __fastcall TForm1::FormCreate(TObject *Sender) { if(!FileExists("D:\\Error.txt")) FileCreate("D:\\Error.txt"); } //--------------------------------------------------------------------------- void TForm1::Error_Message(const char * Text, const char * Caption , int Flags) { TStringList *slBuf=new TStringList; slBuf->LoadFromFile("D:\\Error.txt"); const String SText=DateToStr(Date()) TimeToStr(Time()) " " (String)Text; slBuf->Add(SText); slBuf->SaveToFile("D:\\Error.txt"); delete slBuf; Application->MessageBox(Text, Caption, Flags); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Error_Message("This is ERROR##1","error",MB_OK); } //---------------------------------------------------------------------------不過 andychang1690 大大提出來的解法似乎又更深入了,我得再研究看看還有沒有更好的寫法,感謝大大們的鼎力相助 |
cliffpen
一般會員 發表:35 回覆:18 積分:15 註冊:2005-05-16 發送簡訊給我 |
為了讓messagebox出現後,能自動消失
參考了 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=37409 此篇後
程式改為(藍色部分為新加的部份)
可是當messagebox出現後卻完全沒反應,請問各位大大指點迷津
//--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { Timer1->Enabled=false; if(!FileExists("D:\\Error.txt")) FileCreate("D:\\Error.txt"); } //--------------------------------------------------------------------------- void TForm1::Error_Message(const char * Text, const char * Caption , int Flags) { Timer1->Enabled=true; TStringList *slBuf=new TStringList; slBuf->LoadFromFile("D:\\Error.txt"); const String SText=DateToStr(Date()) TimeToStr(Time()) " " (String)Text; slBuf->Add(SText); slBuf->SaveToFile("D:\\Error.txt"); delete slBuf; Application->MessageBox(Text, Caption, Flags); } //--------------------------------------------------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender) { SendMessage(GetActiveWindow,WM_CLOSE,0,0); Timer1->Enabled=false; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Error_Message("This is ERROR##1","error",MB_OK); } |
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
|
cliffpen
一般會員 發表:35 回覆:18 積分:15 註冊:2005-05-16 發送簡訊給我 |
|
andychang1690
資深會員 發表:20 回覆:694 積分:442 註冊:2003-03-14 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |