Class/Object between VC++ and Delphi |
尚未結案
|
BorlandUser
中階會員 ![]() ![]() ![]() 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
之前我想找一些文章關於開啟一張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 發送簡訊給我 |
|
BorlandUser
中階會員 ![]() ![]() ![]() 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
|
william
版主 ![]() ![]() ![]() ![]() ![]() 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
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 發送簡訊給我 |
|
william
版主 ![]() ![]() ![]() ![]() ![]() 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
|
BorlandUser
中階會員 ![]() ![]() ![]() 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
|
BorlandUser
中階會員 ![]() ![]() ![]() 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
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 發送簡訊給我 |
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 發送簡訊給我 |
|
BorlandUser
中階會員 ![]() ![]() ![]() 發表:148 回覆:217 積分:73 註冊:2004-02-19 發送簡訊給我 |
在每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 發送簡訊給我 |
引言: 如果我張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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |