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

釋放元件後的指標內容

尚未結案
jichang
一般會員


發表:9
回覆:12
積分:4
註冊:2004-02-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-12 18:21:07 IP:210.71.xxx.xxx 未訂閱
抱歉,之前在已被答覆的問題區有詢問過類似的問題,但不知是否是已被答覆,並未見人回答,在此再詢問一次各位高手(不知這樣是否違反規定,小弟不太確定,如果違反,請多見諒),可否幫我解惑? 我曾嘗試createoleobject一個物件,使用完後想要釋放掉這個元件,使用過unassigned和null等方法,但使用unassigned後,這個元件的指標依然有資料,且再使用這個元件的function也沒有發生問題。使用null後,該元件的指標也還是有資料,但在使用function後就發生錯誤。 想請問,如果想要釋放元件該使用哪個適當的方法呢,此外,所謂的釋放元件,是不是這個元件也會一並釋放所佔的指標呢? 請各位能抽空幫小弟解決一下這個問題,不勝感激
ha0009
版主


發表:16
回覆:507
積分:639
註冊:2002-03-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-12 23:37:08 IP:61.56.xxx.xxx 未訂閱
你好:
  unassigned和null是屬於 Variant 的狀態,如果你要釋放
VCL 物件的話可以呼叫該物件的 Destory 或 Free 的方法,使
用 FreeAndNil 函式則會幫你把變數內容改為 nil。      如果你要釋放的是介面則是要把該介面設為 nil 系統會自行
維護計數值,等計數值為 0 時在釋放。
jichang
一般會員


發表:9
回覆:12
積分:4
註冊:2004-02-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-02-13 11:52:53 IP:210.71.xxx.xxx 未訂閱
抱歉,我先將我的程式貼上給各位看看: procedure TForm1.FormCreate(Sender: TObject); var objDLL: Variant; begin try objDLL := CreateOleObject('Fep.FEPNewInterface.1'); objDLL.initalBuffer; objDLL := Unassigned; except messagedlg('Fail', mtInformation, [mbOK], 0); end; end; 像我如果要用'Fep.FEPNewInterface.1'這個元件,就先將這個元件傳給objDLL這個Variant,做完事情後(如initalBuffer),再將它unassigned,因為一開始就先宣告objDLL了,所以它會有位址嘛,當我unassigned後,它的位址依然存在,這樣我算是釋放了'Fep.FEPNewInterface.1'這個元件嗎?objDLL這個變數之後會被Delphi自動釋放掉嗎?或是要等到程式結束後才會釋放這個變數?此外,FreeAndNil是將物件釋放掉,適用於我這個案例嗎? 請多指教,謝謝
系統時間:2024-05-01 9:53:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!