关于Create Form 的问题 |
答題得分者是:taishyang
|
eakoo
一般會員 發表:6 回覆:0 積分:1 註冊:2005-07-02 發送簡訊給我 |
|
AndrewK
高階會員 發表:6 回覆:151 積分:161 註冊:2006-10-09 發送簡訊給我 |
我使用
form1 := Tform1.create(Application) 和 form1 := Tform1.create(nil) 兩者執行都沒有問題,至於您的程式怎麼會出錯,就要看您完整的程式碼了 而兩者的差別就在於一個有老爸 一個沒老爸 您可參考 物件導向 的 【物件摧毀】的部分內容 亦可於 onclose Event 改變自動摧毀的方式
------
Just Do It ------------------------- 其實男生不是真的喜歡你不減肥,而是喜歡你愛吃還不肥;也不是真的喜歡你不化妝,而是喜歡你素顏也好看;也不是真的喜歡你瘦,而是喜歡你瘦卻有胸;也不是真喜歡你獨立,而是他忙的時候別煩他。女孩子,太認真你就輸了。 |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
Coffee
版主 發表:31 回覆:878 積分:561 註冊:2006-11-15 發送簡訊給我 |
首先要說一下,這應該是發在語言或vCL的討論區吧..
其實我也好奇過這件事,一般來說,我沒記錯,大多數的書都會說設為nil,會在Process結束時回收, 剛剛我實際的測了一下,在Delphi6上面確實是如此。 我新增了一個F:TForm1,生命週期為Unit的變數,打開Debug Unit來trace 。 在Create時,因為設為nil,所以不會被Insert到任何TComponent的Components底下。 在Destroy時,該變數會在FinalizeUnits這個函式裡面被回收完畢。 所以,要說Create(nil)沒有老爸這點來說,其實說對也不對,畢竟Delphi還是好好的幫你回收了..:P 說不對也對,因為Owner就是負責幫你管理記憶體,在Owner被回收時順手回收,讓你的程式對記憶體的回收管理及運用更輕鬆。 ===================引 用 AndrewK 文 章=================== 我使用 form1 := Tform1.create(Application) 和 form1 := Tform1.create(nil) 兩者執行都沒有問題,至於您的程式怎麼會出錯,就要看您完整的程式碼了 而兩者的差別就在於一個有老爸 一個沒老爸 您可參考 物件導向 的 【物件摧毀】的部分內容 亦可於 onclose Event 改變自動摧毀的方式
------
不論是否我發的文,在能力範圍皆很樂意為大家回答問題。 為了補我的能力不足之處,以及讓答案可以被重複的使用,希望大家能儘量以公開的方式問問題。 在引述到我的文時自然會儘量替各位想辦法,謝謝大家! |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |