全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:708
推到 Plurk!
推到 Facebook!

delete一個物件的問題

尚未結案
biau
一般會員


發表:25
回覆:32
積分:21
註冊:2003-02-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-22 23:01:21 IP:163.28.xxx.xxx 未訂閱
//我想讓 //Button1按下之後會產生一個Editor物件 //Button2按下之後會刪除產生的Editor物件 執行時先按下Button1後可以正確產生一個Editor物件 再按Button2也的確把產生一個Editor物件刪掉了 但是奇怪的是,為何檢查 s 是否為NULL時, s 卻還有值 如此若是user在Editor物件刪掉不存在時又按Button2 不就會產生Exception嗎? 不知道是不是我的觀念有錯????? TEdit *s; void __fastcall TForm1::Button1Click(TObject *Sender) { s=new TEdit(Form1); s->Parent=Form1; s->Text="Editor物件產生"; } void __fastcall TForm1::Button2Click(TObject *Sender) { if (s!=NULL){ delete s; } }
RaynorPao
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-22 23:24:06 IP:61.221.xxx.xxx 未訂閱
引言: //我想讓 //Button1按下之後會產生一個Editor物件 //Button2按下之後會刪除產生的Editor物件 執行時先按下Button1後可以正確產生一個Editor物件 再按Button2也的確把產生一個Editor物件刪掉了 但是奇怪的是,為何檢查 s 是否為NULL時, s 卻還有值 如此若是user在Editor物件刪掉不存在時又按Button2 不就會產生Exception嗎? 不知道是不是我的觀念有錯????? TEdit *s; void __fastcall TForm1::Button1Click(TObject *Sender) { s=new TEdit(Form1); s->Parent=Form1; s->Text="Editor物件產生"; } void __fastcall TForm1::Button2Click(TObject *Sender) { if (s!=NULL){ delete s; } }
biau 你好: 基本上,你的觀念是正確的,因此,通常都會做記號(NULL)和檢查機制 以防止錯誤的發生,下面的範例程式碼是小弟我常用的方法,提供給你做參考 < class="code"> TEdit *s; //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { if(s!=NULL) { delete s; s=NULL; // 或者把上面兩行以 return; 取代 } if(s==NULL) { s=new TEdit(this); s->Parent=this; } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { if(s!=NULL) { delete s; s=NULL; } } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { s=NULL; } -- Enjoy Researching & Developing -- 發表人 - RaynorPao 於 2003/06/22 23:27:43 發表人 - RaynorPao 於 2003/06/23 00:39:27
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
biau
一般會員


發表:25
回覆:32
積分:21
註冊:2003-02-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-06-23 12:14:16 IP:163.19.xxx.xxx 未訂閱
我感到疑惑的是為什麼delete後 還必須自己將物件指標指定為null???
RaynorPao
版主


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-06-23 13:20:55 IP:203.73.xxx.xxx 未訂閱
引言: 我感到疑惑的是為什麼delete後 還必須自己將物件指標指定為null???
biau 你好:
(1)你也可以不將指標設為 NULL,如果你有想到更好的方法,期待你跟大家一起
   分享
(>    -- 
        
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
biau
一般會員


發表:25
回覆:32
積分:21
註冊:2003-02-27

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-06-23 13:26:21 IP:163.19.xxx.xxx 未訂閱
謝謝RaynorPao 這樣講起來,我就比較了解了!!謝謝您
系統時間:2024-05-21 4:05:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!