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

程式關閉錯誤

答題得分者是:RaynorPao
palw
初階會員


發表:45
回覆:89
積分:26
註冊:2003-02-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-06 22:58:25 IP:61.30.xxx.xxx 未訂閱
我寫了一個程式,但有時候關閉時會出現錯誤訊息,程式關閉後 會先出現: 應用程式錯誤 應用程式發生例外不明軟體例外錯誤(0x0eedade)於位置0x77e6f142 出現兩次之後,還會出現: Abnormal program termination 請問一下,為什麼會造成這樣的情況呢?或者有什麼可能會造成這樣的情況呢? 懇請指教。謝謝!
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-06 23:04:41 IP:61.221.xxx.xxx 未訂閱
引言: 我寫了一個程式,但有時候關閉時會出現錯誤訊息,程式關閉後 會先出現: 應用程式錯誤 應用程式發生例外不明軟體例外錯誤(0x0eedade)於位置0x77e6f142 出現兩次之後,還會出現: Abnormal program termination 請問一下,為什麼會造成這樣的情況呢?或者有什麼可能會造成這樣的情況呢? 懇請指教。謝謝!
palw 你好: 這種情況~~通常都是自己的指標(記憶體管理)沒有處理好才會造成的< > 建議你先檢查自己的程式碼流程中的先後順序,或者把你的程式碼貼上來< > -- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
palw
初階會員


發表:45
回覆:89
積分:26
註冊:2003-02-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-06 23:08:47 IP:61.30.xxx.xxx 未訂閱
引言:
引言: 我寫了一個程式,但有時候關閉時會出現錯誤訊息,程式關閉後 會先出現: 應用程式錯誤 應用程式發生例外不明軟體例外錯誤(0x0eedade)於位置0x77e6f142 出現兩次之後,還會出現: Abnormal program termination 請問一下,為什麼會造成這樣的情況呢?或者有什麼可能會造成這樣的情況呢? 懇請指教。謝謝!
palw 你好: 這種情況~~通常都是自己的指標(記憶體管理)沒有處理好才會造成的< > 建議你先檢查自己的程式碼流程中的先後順序,或者把你的程式碼貼上來< > -- Enjoy Researching & Developing -- 版主,你好: 也就是說記憶體沒有釋放掉嗎?因為程式太長了,有十幾個FORM,不過大部分都是動態產生的FORM,不知道是不是跟此有關係,在程式中,我也使用了很多的MEMO。MEMO也要釋放記憶體嗎?如果要釋放記憶體,要怎麼做呢?把變數清空就好了嗎?
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-06 23:29:02 IP:61.221.xxx.xxx 未訂閱
引言: 版主,你好: 也就是說記憶體沒有釋放掉嗎?因為程式太長了,有十幾個FORM,不過大部分都是動態產生的FORM,不知道是不是跟此有關係,在程式中,我也使用了很多的MEMO。MEMO也要釋放記憶體嗎?如果要釋放記憶體,要怎麼做呢?把變數清空就好了嗎?
palw 你好:
(1)基本上在 design time 就拉到 form 上的元件,是不需要自己再做釋放的動
   作的
(2)如果你的程式碼很多的話,建議你可以利用 bcb 的 debug 功能,把中斷點
   設在接近程式結束的地方,先把發生問題的那一行找到最重要
(3)另外~~這裡也有一個 debug 工具可以用(參考看看)
   >    -- 
        
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
palw
初階會員


發表:45
回覆:89
積分:26
註冊:2003-02-24

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-07 09:16:22 IP:211.78.xxx.xxx 未訂閱
可是我只有執行Close FORM的動作才會這樣子耶!
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-03-07 09:29:36 IP:203.73.xxx.xxx 未訂閱
引言: 可是我只有執行Close FORM的動作才會這樣子耶!
palw 你好: 同樣一句話,純粹用猜測的,應該對問題的幫助有限 建議還是採用上一篇所提到的 > --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
palw
初階會員


發表:45
回覆:89
積分:26
註冊:2003-02-24

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-03-07 09:48:25 IP:211.78.xxx.xxx 未訂閱
版主你好: 試過了方法,Debug抓到了一些資料,但我看不太懂,方便說明一下嗎?或者這些是錯誤的訊息嗎? 00000000 0.00000000 [1448] 00000001 0.00000000 [1448] Printing page: 00000002 0.00781803 [1448] 1 00000003 0.22252130 [1448] 00000004 0.22252130 [1448] Printing page: 00000005 0.22502664 [1448] 2 00000006 0.51094790 [1448] 00000007 0.51094790 [1448] Printing page: 00000008 0.53587677 [1448] 3 00000009 0.96507489 [1448] 00000010 0.96507489 [1448] Printing page: 00000011 0.98556716 [1448] 4 00000012 1.39500579 [1448] 00000013 1.39500579 [1448] Printing page: 00000014 1.39530834 [1448] 5 00000015 2.61995952 [1448] 00000016 2.61995952 [1448] Printing page: 00000017 2.62029364 [1448] 6 00000018 2.65072879 [1448] 00000019 2.65072879 [1448] Printing page: 00000020 2.65104643 [1448] 7 00000021 2.83009321 [1448] 00000022 2.83009321 [1448] Printing page: 00000023 2.83047063 [1448] 8 00000024 3.03105367 [1448] 00000025 3.03105367 [1448] Printing page: 00000026 3.03138555 [1448] 9 00000027 3.38860414 [1448] 00000028 3.38860414 [1448] Printing page: 00000029 3.38893547 [1448] 10 00000030 3.51732860 [1448] 00000031 3.51732860 [1448] Printing page: 00000032 3.51764791 [1448] 11 00000033 3.69157868 [1448] 00000034 3.69157868 [1448] Printing page: 00000035 3.69190414 [1448] 12 00000036 3.88616710 [1448] 00000037 3.88616710 [1448] Printing page: 00000038 3.88650233 [1448] 13
tender
初階會員


發表:23
回覆:90
積分:37
註冊:2002-09-26

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-03-07 10:23:35 IP:203.69.xxx.xxx 未訂閱
請問你有在Form裡開執行緒嗎!! 若有的話,那應該就是他了!! 若宣告一個 TThread *xxx 又一直 new 同一個 xxx 例如 for (int  k=0;k<10;k ) xxx = new xyzThread(false) 在一個就的執行緒為完成前且未紀錄該執行緒的之指標 再關掉AP時會爆炸,因為雖然Builder的compiler會自行紀錄 但它會錯亂到底 xxx 是指哪一個未關閉的執行緒要被關掉呢 然後就 Bomb 才疏學淺小朋友的淺見 ^_^ (Ps. 若我的觀念錯了請 OB 指導喔 )
palw
初階會員


發表:45
回覆:89
積分:26
註冊:2003-02-24

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-03-07 11:01:15 IP:211.78.xxx.xxx 未訂閱
謝謝tender的提醒,我每次收信connect的時候都New一個Thread,Disconnect的時候就下Terminate,也許是因為這樣造成錯誤.目前在努力嘗試中....
palw
初階會員


發表:45
回覆:89
積分:26
註冊:2003-02-24

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-03-07 11:08:03 IP:211.78.xxx.xxx 未訂閱
可是暫停執行緒再啟動的時候,會不能作業,而且出現error,請問這是為什麼呢? 如果我用結束執行緒然後在建立一個去執行就不會有問題,不過關閉視窗的時候會出現我之前提的Error Message.....    懇請幫忙.謝謝!
tender
初階會員


發表:23
回覆:90
積分:37
註冊:2002-09-26

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-03-09 01:32:23 IP:61.70.xxx.xxx 未訂閱
有一個可能性,就是在你關閉AP時你所開的主執行緒(就是AP本身的程序),已經將 你的資源釋放了,但是你開的執行緒未關閉且引用到以釋放的資源. 如: 主程序: xxx = new char[10];// xxx is an public var. delete xxx; // 以關閉 你所開的執行緒: 主程序->xxx = "1234";//未關閉就會出現錯誤 ========================= 或者是你有用TList 或 TListView 嗎? 使用list 裡沒有資料的 Index 也有可能喔!! 如 list 的 items 只有2個 那 list->Items->Item[2].. //就會出現類似那個位址的錯誤 ^_^
palw
初階會員


發表:45
回覆:89
積分:26
註冊:2003-02-24

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-03-09 21:49:57 IP:61.30.xxx.xxx 未訂閱
謝謝tender,但我目前的情況是這樣.... 當表單建立的時候 ,我就建立一個Thread,當NMPOP3->Connected == true的時候,我就啟動Thread,收完了信NMPOP3->Disconnect,我就將Thread暫停,再連線至另一個HOST收信的時候,再啟動。。。,表單關閉的時候,我就Close Thread ... 之前的作法是,每次Connect的時候,就建立Thread,當Discooect的時候就停止那個Thread,於是這樣會有之前我所提到的問題,就是關閉的時候會有Error產生,可是在執行過程都會很順利。 但我目前的方法,讓我的程式在執行中變的很不穩定,很容易沒有回應。 請問一下,為什麼中斷再啟動就怪怪的呢?難道應該直接停止再建立新的Thread嗎?可是這樣關閉時會有錯誤的問題產生,請大家幫幫忙。。謝謝。
tender
初階會員


發表:23
回覆:90
積分:37
註冊:2002-09-26

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-03-10 09:01:25 IP:211.75.xxx.xxx 未訂閱
或許....將你 開啟和關閉的那一段post出來可能比較了解, 若不方便,也沒關係. ^_^ 問題應該就是它吧>> 請問你的Thread 是這樣子的嗎 while ((!Terminated)&&(NMPOP3->Connected)) { .... } ., 請問你有用 try ..catch 嗎
palw
初階會員


發表:45
回覆:89
積分:26
註冊:2003-02-24

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-03-10 10:39:38 IP:211.78.xxx.xxx 未訂閱
引言: 或許....將你 開啟和關閉的那一段post出來可能比較了解, 若不方便,也沒關係. ^_^ 問題應該就是它吧>> 請問你的Thread 是這樣子的嗎 while ((!Terminated)&&(NMPOP3->Connected)) { .... } ., 請問你有用 try ..catch 嗎
有的! 我在Thread內有用try --catch. 不會不方便放上來,只是程式碼有點長,我整理一下再POST上來! 謝謝!
palw
初階會員


發表:45
回覆:89
積分:26
註冊:2003-02-24

發送簡訊給我
#15 引用回覆 回覆 發表時間:2003-03-10 10:47:00 IP:211.78.xxx.xxx 未訂閱
//按下Receive Mail的命令鈕的時候 void __fastcall TForm1::cmdreceiveClick(TObject *Sender) {    Form1->Re_Status = "Receive All";    MailThread->Resume(); }    // MailThread的Form void __fastcall TMailThread::Execute() {  //---- Place thread code here ----   //====宣告變數=======    setup_ini a;    D1 b;    c_file c;    D2 d;    Receive_Mail = new TStringList();    Receive_Mail->LoadFromFile("Mail_Save.txt");   //===================      /*-----------------初始化------------------     cancel_flag-->使用者是否按下Stop鍵來停止收信     Dir2-->目前位置為MyMails/Setup下     same_key --->是否此封信已接收過     Memo7-->紀錄Mail的索引   */     Form1->cancel_flag=false;     a.same_key = false;     SetCurrentDir( Form1->Dir2 );   //-----------------------------------------       //===============判斷目前有幾個Host要收===================================    //宣告變數            //預設值            a.TotalLines = 0;         c.File_Name = Form1->Dir2 + "\\Setup.ini";         a.A = new TFileStream(c.File_Name,fmOpenRead);         a.FileSize = a.A->Size;         a.codebuffer = new char[a.FileSize];         a.A->Read(a.codebuffer,a.FileSize);            for(a.CodeIndex=0;a.CodeIndexPosition = a.PositionL; a.A->Read(a.codetemp,a.PositionR-a.PositionL 1); a.Set[a.TotalLines] = a.codetemp; a.Set[a.TotalLines].SetLength(a.PositionR-a.PositionL 1); a.TotalLines ; delete a.codetemp; } } // 比對字串為POP Server值 /* ------順序: UserName=Emily; -- i - 2 userMail=Emily@mail.ktc.com.tw; -- i - 1 popmail=mail.ktc.com.tw; --Find Data Start Flag i smtpmail=mail.ktc.com.tw; -- i 1 logon_account=emily; -- i 2 logon_pwd=MjA0MDhDN0I5Mjg4Mj; -- i 3 load_pwd=false; -- i 4 pop_port = 110; -- i 5 smtp_port = 25 ; -- i 6 receive_again = false; --- i 7 */ if (Trim(a.Set[2])!="") { //--------------開啟視窗時,載入使用者選定的值-------------------- Form8->Visible = true ; Form8->Edit1->Caption = "Trying connet to POP Server , please wait..............................."; Form8->cmdstop->Visible = true; Form8->cmdclose->Visible = false; Form8->ProgressBar1->Max = 0; Form1->cancel_flag = false; //---------------------------------------------------------------- if (Form1->Re_Status!="Receive All") { for(b.i=0; b.iRe_Status) { Form1->lstto->Lines->Add(a.Set[b.i-1]); //新增到Form1備份(Panel3)寄件人的位置 Form1->NMPOP3->Host = a.Set[b.i]; Form1->NMSMTP->Host = a.Set[b.i 1]; Form1->NMSMTP->UserID = a.Set[b.i 2]; Form1->NMPOP3->UserID = a.Set[b.i 2]; if (StrToBool(a.Set[b.i 4])==true) Form1->NMPOP3->Password = Form1->Decode_pwd(a.Set[b.i 3]); Form1->NMPOP3->Port=StrToInt(a.Set[b.i 5]); Form1->NMSMTP->Port=StrToInt(a.Set[b.i 6]); Form1->NMPOP3->DeleteOnRead = StrToBool(a.Set[b.i 7]); break; } } sub_remail(); } else if (Form1->Re_Status=="Receive All") { for(b.i=0; b.iNMPOP3->Host = a.Set[b.i 2]; Form1->NMSMTP->Host = a.Set[b.i 3]; Form1->NMSMTP->UserID = a.Set[b.i 4]; Form1->NMPOP3->UserID = a.Set[b.i 4]; if (StrToBool(a.Set[b.i 6])==true) Form1->NMPOP3->Password = Form1->Decode_pwd(a.Set[b.i 5]); Form1->NMPOP3->Port=StrToInt(a.Set[b.i 7]); Form1->NMSMTP->Port=StrToInt(a.Set[b.i 8]); Form1->NMPOP3->DeleteOnRead = StrToBool(a.Set[b.i 9]); sub_remail(); } } Form1->Memo1->Lines->SaveToFile(Form1->NMPOP3->Host "_id.txt"); //跑完迴圈之後的狀態列 Form8->ProgressBar1->Position = Form1->NMPOP3->MailCount ; //如果有錯誤,或無法接收的信件,則詢問user是否查看 if (Form8->ListView1->Items->Count>0) { a.TotalLines = MessageBox(NULL,"You have error mail cannot receive, please click [OK] to view mail title else click [cancel] to leave program",NULL,MB_OKCANCEL MB_ICONQUESTION); if (a.TotalLines==IDOK) { Form8->cmdstop->Visible = false; Form8->cmdclose->Visible = true; Form8->FormStyle = fsStayOnTop ;// 將Form8的狀態設為StayOnTop } else Form8->Visible = false; } else Form8->Visible = false; Form1->NMPOP3->Disconnect(); Form8->Edit1->Caption = "Trying connet to POP Server , please wait..............................."; Form8->Edit2->Caption = ""; Form8->Edit3->Caption = ""; Form1->Re_Status = ""; delete Receive_Mail; } delete a.codebuffer; delete a.A; } //--------------------------------------------------------------------------- void __fastcall TMailThread::sub_remail(void) { //====宣告變數======= setup_ini a; D1 b; c_file c; D2 d; //=================== if (Form1->cancel_flag==false) { //呼叫連線 //=================================狀態處理=============================== Form1->StatusBar1->SimpleText = "Status: Connect to POP3 Server-" Form1->NMPOP3->Host ; Form8->Edit1->Caption ="Connect to POP3 Server-" Form1->NMPOP3->Host; Form8->Edit2->Caption="The Host (" Form1->NMPOP3->Host ") have " IntToStr( Form1->NMPOP3->MailCount ) " Mails"; //======================================================================== Form1->NMPOP3->Connect(); if (Form1->NMPOP3->Connected == true ) { //-------File_exist-->是否有接收過此Host的信件 //------Memo1-->現有的已收下index //------Memo3-->現有的已收下的index,要做刪除動作,因為已經check到為重複信件的index //----- 就將其刪除,並免重複search.浪費時間. if (FileExists(Form1->NMPOP3->Host "_id.txt")==false) a.file_exist = false ; else { a.file_exist = true ; Form1->Memo1->Lines->Clear(); Form1->Memo3->Lines->Clear(); Form1->Memo1->Lines->LoadFromFile(Form1->NMPOP3->Host "_id.txt"); Form1->Memo3->Lines->LoadFromFile(Form1->NMPOP3->Host "_id.txt"); } //======================================================== //-----非0時,顯示mail件數及目前接收件數 Form1->NMPOP3->ReportLevel = Status_Basic; Form8->ProgressBar1->Max = Form1->NMPOP3->MailCount ; if (a.file_exist==true) Form8->Edit3->Caption="Scaning has been download's mail now"; //=========================開始接收郵件=================================== for(Form1->M_Item=1; Form1->M_Item<=Form1->NMPOP3->MailCount; Form1->M_Item ) { //---------使用者按下Stop中斷收信----------- if (Form1->cancel_flag==true) break; else { //============檢查是否有信件被收取過====================== if (a.file_exist==true) { for (b.i = 0 ; b.i<Form1->Memo3->Lines->Count; b.i ) { if (Trim(Form1->Memo3->Lines->Strings[b.i])==Trim(Form1->NMPOP3->UniqueID(Form1->M_Item))) { Form1->Memo3->Lines->Delete(b.i); //出現過的檢查碼,則不再做check動作 a.same_key = true; break; } } } if (a.same_key==false) //表示不曾接收過此封信 { Form8->Edit3->Caption="Now download the " IntToStr(Form1->M_Item) "th"; GetMail(Form1->M_Item); Form8->ProgressBar1->Position = Form1->M_Item ; //此封信已經下載,所以將此封信index存入,以供比對! Form1->Memo1->Lines->Add(Trim(Form1->NMPOP3->UniqueID(Form1->M_Item))); } else { Form8->Edit3->Caption="Now check the " IntToStr(Form1->M_Item) "th"; } } } } } } void __fastcall TMailThread::GetMail(int Down_Item) { //---宣告變數---- setup_ini a; re_mail b; c_file c; D1 d; TListItem *pListItem; TListItem *F8Item; TStringList* MyList = new TStringList(); //--------------- /*-----------------初始化------------------ Dir2-->目前位置為MyMails/Setup下 設檔名 , 用年月日時分秒 */ c.File_Name = FormatDateTime("yymmddhhnnsszzzam/pm", Now() 0.125); SetCurrentDir(Form1->Dir2); //----------------------------------------- try //判斷是否有郵件有問題 { Form1->NMPOP3->GetMailMessage(Down_Item); //Send 解碼 b.sender_temp = Trim(Form1->B64Decode(Trim(Form1->NMPOP3->MailMessage->From))); //Subject解碼 b.subject_temp = Trim(Form1->B64Decode(Trim(Form1->NMPOP3->MailMessage->Subject))); //==============存索引檔======================== SetCurrentDir(Form1->Dir2); Receive_Mail->LoadFromFile("Mail_Save.txt"); //當Subject中有','則更換為, while (b.subject_temp.Pos(",")!=0) StringReplace(b.subject_temp, ",", ",", c.flags); // box-index,mail-index,reecive time, from , sender b.p1 = "0," Trim(c.File_Name) "," Now() "," b.subject_temp "," b.sender_temp ; Receive_Mail->Add(b.p1); //================================================== //----------------存成.eml實體檔-------------------------- MyList->Clear(); MyList->Add(Form1->NMPOP3->MailMessage->Head->Text); MyList->Add(Form1->NMPOP3->MailMessage->RawBody->Text); MyList->SaveToFile(Form1->Dir3 c.File_Name ".eml"); //------------------------------------------------------- //================存Attachement的資料===================== Form1->Memo7->Lines->Clear(); SetCurrentDir(Form1->Dir2); Form1->Memo7->Lines->LoadFromFile("att.txt"); b.temp =c.File_Name ","; if (Trim(Form1->NMPOP3->MailMessage->Attachments->Text)!="") { for (d.i=0; d.i<=Form1->NMPOP3->MailMessage->Attachments->Count-1; d.i ) { b.Att_name = Form1->NMPOP3->MailMessage->Attachments->Strings[d.i]; b.Att_name = Form1->Dir1 "MyMails\\Receive Folder\\" b.Att_name; b.temp = b.temp b.Att_name ";"; } // end for Form1->Memo7->Lines->Add(b.temp); Form1->Memo7->Lines->SaveToFile("att.txt"); } // end if for attachments //如果目前的TreeView是選擇了收件夾,則直接顯示接收下來的信件 if (Form1->tree_value==0) { pListItem = Form1->ListView1->Items->Add(); //--------------------Sender處理--------------------------- while (b.sender_temp.Pos('"')!=0) b.sender_temp = DelKeyWord(b.sender_temp,'"'); if (b.sender_temp.Pos("<")!=0 && b.sender_temp.Pos(">")!=0 && b.sender_temp.SubString(1,b.sender_temp.Pos("<")-1).Length()>=1 ) b.sender_temp.Delete(b.sender_temp.Pos("<"),b.sender_temp.Pos(">")); //---------------------------------------------------------- pListItem->Caption = b.sender_temp ; pListItem->SubItems->Add(b.subject_temp); pListItem->SubItems->Add(Now()); pListItem->SubItems->Add(c.File_Name); pListItem->SubItems->Add("0"); //0代表收件夾信件 } Receive_Mail->SaveToFile("Mail_Save.txt"); } catch (...) { Form1->NMPOP3->GetSummary(Down_Item); //Send 解碼 b.sender_temp = Form1->B64Decode(Trim(Form1->NMPOP3->Summary->From)); //Subject解碼 b.subject_temp = Form1->B64Decode(Trim(Form1->NMPOP3->Summary->Subject)); //將無法收取的mail紀錄在Form8的Listview中 F8Item = Form8->ListView1->Items->Add(); F8Item->Caption = IntToStr(Down_Item) "th of " IntToStr(Form1->NMPOP3->MailCount) " mails on " Form1->NMPOP3->Host ; F8Item->SubItems->Add(b.sender_temp); F8Item->SubItems->Add(b.subject_temp); F8Item->SubItems->Add(Form1->NMPOP3->Summary->Bytes); } delete MyList; }
tender
初階會員


發表:23
回覆:90
積分:37
註冊:2002-09-26

發送簡訊給我
#16 引用回覆 回覆 發表時間:2003-03-11 20:00:42 IP:211.75.xxx.xxx 未訂閱
雖然還未看完,但是發現問題應該就是繼承TList的TStringList    delete Receive_Mail; 這如果是在迴圈裡就一定會跑出Error (ps.你的code好像怪怪的 如: "for(b.i=0; b.i { " )
palw
初階會員


發表:45
回覆:89
積分:26
註冊:2003-02-24

發送簡訊給我
#17 引用回覆 回覆 發表時間:2003-03-11 23:07:59 IP:61.30.xxx.xxx 未訂閱
Sorry,沒有說清楚,因為我有定義struct,所以會有d.i。 而"for(b.i=0; b.i { "-->我沒看到在哪耶!應該不會有不完全的判斷式! delete Receive_Mail並沒有在迴圈裡,是當我收完這個host的信件時,我才做delete Receive_Mail的動作。 尚未建立StringList時,就有我之前所提的問題摟,StringList是最近才加入的。 anyway , thanks for your help .
palw
初階會員


發表:45
回覆:89
積分:26
註冊:2003-02-24

發送簡訊給我
#18 引用回覆 回覆 發表時間:2003-03-12 10:30:09 IP:211.78.xxx.xxx 未訂閱
目前我又將程式改回在Host連線時,建立Thread,而Disconnect時,刪除Thread... 可是我要如何避免成適當掉的時候,沒有刪除Thread呢?我可以判斷Thread是否有被刪除嗎?有相對的屬性嗎?我之前有試過,但沒有發現,希望大家幫幫忙.謝謝!!
palw
初階會員


發表:45
回覆:89
積分:26
註冊:2003-02-24

發送簡訊給我
#19 引用回覆 回覆 發表時間:2003-03-12 11:12:51 IP:211.78.xxx.xxx 未訂閱
引言: 目前我又將程式改回在Host連線時,建立Thread,而Disconnect時,刪除Thread... 可是我要如何避免成適當掉的時候,沒有刪除Thread呢?我可以判斷Thread是否有被刪除嗎?有相對的屬性嗎?我之前有試過,但沒有發現,希望大家幫幫忙.謝謝!! < face="Verdana, Arial, Helvetica"> 現在我找到一個方法,就是將FreeOnTerminate設為true,請問.如果Thread執行的時候,突然當掉,那Thread會自動Terminate嗎??
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#20 引用回覆 回覆 發表時間:2003-03-12 11:21:24 IP:203.73.xxx.xxx 未訂閱
引言: 現在我找到一個方法,就是將FreeOnTerminate設為true,請問.如果Thread執行的時候,突然當掉,那Thread會自動Terminate嗎?? < face="Verdana, Arial, Helvetica"> palw 你好: 理論上來說,thread 的生命週期是跟著 create 它的 process 當 process 被 terminate 的時候,thread 也會跟著被 terminate --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
palw
初階會員


發表:45
回覆:89
積分:26
註冊:2003-02-24

發送簡訊給我
#21 引用回覆 回覆 發表時間:2003-03-12 11:26:36 IP:211.78.xxx.xxx 未訂閱
引言:
引言: 現在我找到一個方法,就是將FreeOnTerminate設為true,請問.如果Thread執行的時候,突然當掉,那Thread會自動Terminate嗎?? < face="Verdana, Arial, Helvetica"> palw 你好: 理論上來說,thread 的生命週期是跟著 create 它的 process 當 process 被 terminate 的時候,thread 也會跟著被 terminate -- >< face="Verdana, Arial, Helvetica"> 版主你好: 那表示我關閉此程式,也就等於將process terminate摟?
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#22 引用回覆 回覆 發表時間:2003-03-12 12:04:23 IP:203.73.xxx.xxx 未訂閱
引言: 那表示我關閉此程式,也就等於將process terminate摟? < face="Verdana, Arial, Helvetica">
palw 你好:
(1)是的
(2)如果你的作業系統是 Windows NT/2000/XP 可以利用工作管理員來驗證
(3)打開工作管理員,點選「處理程序」TAB,然後點選「檢視/選擇欄位」確認
   「執行緒計數」這個選項已經打勾,按「確定」,然後執行你的程式(exe)
   觀察你的程式的 process 及 thread,直至程式關閉為止
-- Enjoy Researching & Developing --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
系統時間:2024-04-27 10:13:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!