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

Class/Object between VC++ and Delphi

尚未結案
BorlandUser
中階會員


發表:148
回覆:217
積分:73
註冊:2004-02-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-03 09:57:57 IP:203.185.xxx.xxx 未訂閱
之前我想找一些文章關於開啟一張form(用parameter去做),發現有人提出... 在每from的unit加入以下程式碼 initialization RegisterClass(form class); 在主要的form用以下程式碼來create form var cs : TClass; fm : TForm; begin cs := GetClass(TForm Class); Application.CreateForm(TComponentClass(cs), fm); end; 跟著就有關問題,再找一些討論文章...以我對delphi的理解是... 就算當delphi 宣告了一個class如 var Form1 := TForm1; 就算是這是form1被宣告了,但是還不能使用,因為form1只是一個參考(refer,有點似pointer),form1要透過createform才能可以建立真正的object...這個情況和我對vc 的理解有點不同,c 只要: CObject m_Object; 這個m_object當被宣告成為CObject的變數時,就已經可以使用,m_object本身已經不是pointer或refer了... 這兩種Object Concept 使我有點模糊...請問有什麼人能解釋一下呢? 多謝各位
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-03 10:53:08 IP:147.8.xxx.xxx 未訂閱
You're right, all objects are pointer in Delphi.    The book Inside VCL has the answer 
BorlandUser
中階會員


發表:148
回覆:217
積分:73
註冊:2004-02-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-03 10:57:51 IP:203.185.xxx.xxx 未訂閱
咁係咪即係話delphi的class/object concept係同vc 係吾同,vc 的object就吾係pointer呢?
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-03-03 11:48:10 IP:147.8.xxx.xxx 未訂閱
It depends on your meaning of pointer. All virables could be considered as a pointer pointer to the proper memory location, right? In your case, the main difference between Delphi and VC is that: In VC the compiler will auto create/destroy the object while Delphi won't.
BorlandUser
中階會員


發表:148
回覆:217
積分:73
註冊:2004-02-19

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-03-03 11:58:18 IP:203.185.xxx.xxx 未訂閱
因為看完delphi文章後,發覺佢話就算declare左個object的variable,但都吾可以用到,要靠create先做到...但係vc 就吾算,我直接declare左個object的varialbe,佢已經call左constructor,而且吾駛靠create或new都可以直接用到,咁所以我有的混亂... >_<'
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-03-03 12:07:26 IP:147.8.xxx.xxx 未訂閱
Once you got used to it, it is fine 
BorlandUser
中階會員


發表:148
回覆:217
積分:73
註冊:2004-02-19

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-03-03 12:13:51 IP:203.185.xxx.xxx 未訂閱
initialization RegisterClass(form class); 在主要的form用以下程式碼來create form var cs : TClass; fm : TForm; begin cs := GetClass(TForm Class); Application.CreateForm(TComponentClass(cs), fm); end; PS. 請問可否解釋一下以上的code為什麼能夠做到create form的動作呢? 吾該
BorlandUser
中階會員


發表:148
回覆:217
積分:73
註冊:2004-02-19

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-03-03 12:24:25 IP:203.185.xxx.xxx 未訂閱
OT一問少少野,如果我無記錯vc 會係咁的: Class ABC /* Declaration */ ABC m_ABC; <-----會直接create左一個ABC的object,而且可以直接使用, ABC *p_ABC; <-----會直接create左一個ABC的pointer,但沒有一真正的object產生了.. p_ABC = new ABC(); <------會直接create一個ABC object,而且會由p_ABC會儲住address of 新object ABC 請問我對嗎?咁其實vc 用pointer時,都要用new,咁同delphi又好似同一原理wo.......... >_<"
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-03-03 13:32:05 IP:147.8.xxx.xxx 未訂閱
1. http://delphi.ktop.com.tw/topic.php?TOPIC_ID=19684 2. Yes, you're right. Perhaps you could treat class type in Delphi as pointer in order to make life easier?
BorlandUser
中階會員


發表:148
回覆:217
積分:73
註冊:2004-02-19

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-03-03 14:45:28 IP:203.185.xxx.xxx 未訂閱
明白明白...多謝版主指教 ^^"
BorlandUser
中階會員


發表:148
回覆:217
積分:73
註冊:2004-02-19

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-03-05 12:48:21 IP:203.185.xxx.xxx 未訂閱
在每from的unit加入以下程式碼 initialization RegisterClass(form class); 在主要的form用以下程式碼來create form var cs : TClass; fm : TForm; begin cs := GetClass(TForm Class); Application.CreateForm(TComponentClass(cs), fm); end; 就以上的code,我雖然也看過相關文章,但我還是有點不明白,請指教一下 >_< 在form那裏加入registerclass呢? 如果我張form叫abcform,咁個class就會係Tabcform,咁我registerclass就係Tabcform啦,right?咁我想問initialization係放係邊架?我將個兩句code放在係impelment下面吾得,上面又吾得,咁應該放係邊? 另外,放係main form個幾code,我大約都明白,就係話搵番相對的class,如剛才的Tabcform,然後放入去createform,但係為什麼另一個parameter係Tform的變數,而吾係在abcform裏面的變數abcform呢?如果只是係frm的話,它會是Tform的變數wo...咁即係點呢?
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-03-05 13:32:39 IP:147.8.xxx.xxx 未訂閱
引言: 如果我張form叫abcform,咁個class就會係Tabcform,咁我registerclass就係Tabcform啦,right?咁我想問initialization係放係邊架?我將個兩句code放在係impelment下面吾得,上面又吾得,咁應該放係邊? Initialization section, just before the final end. 另外,放係main form個幾code,我大約都明白,就係話搵番相對的class,如剛才的Tabcform,然後放入去createform,但係為什麼另一個parameter係Tform的變數,而吾係在abcform裏面的變數abcform呢?如果只是係frm的話,它會是Tform的變數wo...咁即係點呢? [red]Tabcform is inherited from TForm, so it is valid and suitable as you can use the variable frm for all kind of forms.
BorlandUser
中階會員


發表:148
回覆:217
積分:73
註冊:2004-02-19

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-03-06 09:39:20 IP:203.185.xxx.xxx 未訂閱
完全明白,多謝版主...我實在太蠢了 >_<
系統時間:2024-06-26 9:18:59
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!