我該如何來釋放FORM資源 |
尚未結案
|
17kobe
初階會員 發表:86 回覆:73 積分:31 註冊:2007-07-30 發送簡訊給我 |
我有個MAINFORM名稱叫FORM1
然後還有FORM2及FORM3兩個FORM 在FORM1有個TLMDFormDisplay的元件,用來顯示其它的FORM用,還有一個TPAGECONTROL 程式碼如下: [code delphi] procedure TForm1.DisplaySimpleForm(ccFormClass:TComponentClass); begin try fdMainScreen.UnLoad(); fdMainScreen.Parent := PageControl1.ActivePage; fdMainScreen.Execute(TForm(ccFormClass.Create(Application))); except exit; end; end; procedure TForm1.PageControl1Change(Sender: TObject); begin Screen.Cursor := crHourGlass ; try case PageControl1.ActivePageIndex 1 of 1 : DisplaySimpleForm(TForm2 ); 2 : DisplaySimpleForm(TForm3 ); 3 : fdMainScreen.UnLoad(); end; finally Screen.Cursor := crDefault ; end; end; [/code] 但問題是當TLMDFormDisplay元件開過的FORM,UnLoad釋放都無用,還是會佔用記憶體,我看FORM2都有跑到FORM.Destroy事件,但釋放無效不知為什麼. |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
frappe
中階會員 發表:88 回覆:114 積分:95 註冊:2008-10-21 發送簡訊給我 |
|
Coffee
版主 發表:31 回覆:878 積分:561 註冊:2006-11-15 發送簡訊給我 |
當你不知道的時候,最快的方法就是把Debug Unit打開,然後狂按F7,就會發現了..
如果發現了,卻還是不知道在作什麼,再貼上來問,會是不錯的互動。 我個人的想法是,只要確定觸發destructor,就不需要再去管到底有沒有被釋放,這個交給Delphi的架構來處理就好,因為這牽涉到記憶體管理的方式,有時候會像是java一樣,在適當時機才會直接還給OS,剩下的可以留著下次用,這種的管不著。(如果自己有override destructor,要記得inherited 讓上層的destructor也有被執行就是了) 當然,若是在該instance中自己使用constructor或new建立的instance,就至少應該自己在destructor中確保被釋放。 ===================引 用 frappe 文 章=================== 我都寫Action=CaFree; 不知道Free跟CaFree有什麼差別@@ ===================引 用 P.D. 文 章=================== 最直接的方式, 在每一個child form 的 onclose寫 Action:= Free; FormX:= nil; 這是我常用的方法
------
不論是否我發的文,在能力範圍皆很樂意為大家回答問題。 為了補我的能力不足之處,以及讓答案可以被重複的使用,希望大家能儘量以公開的方式問問題。 在引述到我的文時自然會儘量替各位想辦法,謝謝大家! |
RootKit
資深會員 發表:16 回覆:358 積分:419 註冊:2008-01-02 發送簡訊給我 |
CaFree 告訴 Delphi Form Close 後就要釋放資源。
XX.Free 是直接釋放該物件資源。不一樣地 FormX =Nil 目的將公用變數指針指向 NIL 避免重新判斷時會造成 ACCE. ...V .... 問題。 ===================引 用 frappe 文 章=================== 我都寫Action=CaFree; 不知道Free跟CaFree有什麼差別@@ ===================引 用 P.D. 文 章=================== 最直接的方式, 在每一個child form 的 onclose寫 Action:= Free; FormX:= nil; 這是我常用的方法 |
Ktop_Robot
站務副站長 發表:0 回覆:3511 積分:0 註冊:2007-04-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |