釋放元件後的指標內容 |
尚未結案
|
jichang
一般會員 發表:9 回覆:12 積分:4 註冊:2004-02-11 發送簡訊給我 |
抱歉,之前在已被答覆的問題區有詢問過類似的問題,但不知是否是已被答覆,並未見人回答,在此再詢問一次各位高手(不知這樣是否違反規定,小弟不太確定,如果違反,請多見諒),可否幫我解惑? 我曾嘗試createoleobject一個物件,使用完後想要釋放掉這個元件,使用過unassigned和null等方法,但使用unassigned後,這個元件的指標依然有資料,且再使用這個元件的function也沒有發生問題。使用null後,該元件的指標也還是有資料,但在使用function後就發生錯誤。 想請問,如果想要釋放元件該使用哪個適當的方法呢,此外,所謂的釋放元件,是不是這個元件也會一並釋放所佔的指標呢? 請各位能抽空幫小弟解決一下這個問題,不勝感激
|
ha0009
版主 發表:16 回覆:507 積分:639 註冊:2002-03-16 發送簡訊給我 |
|
jichang
一般會員 發表:9 回覆:12 積分:4 註冊:2004-02-11 發送簡訊給我 |
抱歉,我先將我的程式貼上給各位看看: 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是將物件釋放掉,適用於我這個案例嗎? 請多指教,謝謝
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |