線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1514
推到 Plurk!
推到 Facebook!

关于Create Form 的问题

答題得分者是:taishyang
eakoo
一般會員


發表:6
回覆:0
積分:1
註冊:2005-07-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-04-03 10:47:13 IP:115.132.xxx.xxx 訂閱
嗨,
我想知道 form1 := Tform1.create(Application) 和 form1 := Tform1.create(nil) 有什么区别?
为什么当用第一个语句时, 在关闭主视窗时出现“EStackOverflow “ 的问题。但是,当我用第二个是就没问题呢?


谢谢!
Koo
AndrewK
高階會員


發表:6
回覆:151
積分:161
註冊:2006-10-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-04-03 21:20:41 IP:60.250.xxx.xxx 訂閱
我使用
form1 := Tform1.create(Application) 和 form1 := Tform1.create(nil)
兩者執行都沒有問題,至於您的程式怎麼會出錯,就要看您完整的程式碼了

而兩者的差別就在於一個有老爸
一個沒老爸

您可參考 物件導向 的 【物件摧毀】的部分內容
亦可於 onclose Event 改變自動摧毀的方式

------
Just Do It
-------------------------
其實男生不是真的喜歡你不減肥,而是喜歡你愛吃還不肥;也不是真的喜歡你不化妝,而是喜歡你素顏也好看;也不是真的喜歡你瘦,而是喜歡你瘦卻有胸;也不是真喜歡你獨立,而是他忙的時候別煩他。女孩子,太認真你就輸了。
P.D.
版主


發表:571
回覆:3888
積分:3677
註冊:2006-10-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-04-03 22:37:20 IP:61.67.xxx.xxx 未訂閱
請先搜尋本站 form.create 太多相同的發問!
Coffee
版主


發表:31
回覆:878
積分:561
註冊:2006-11-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-04-05 04:24:17 IP:59.124.xxx.xxx 訂閱
首先要說一下,這應該是發在語言或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
回覆:5486
積分:4552
註冊:2002-10-08

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-04-06 00:25:30 IP:218.168.xxx.xxx 訂閱
幫忙移區 ^_^
系統時間:2017-12-15 2:44:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!