宣告變數? |
|
jlamlsc
初階會員 發表:55 回覆:60 積分:28 註冊:2002-06-21 發送簡訊給我 |
|
Apollo.tw
一般會員 發表:3 回覆:4 積分:1 註冊:2002-07-11 發送簡訊給我 |
|
dllee
站務副站長 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
引言: 請問如何宣告一個變數,可以在同一個Project裡的其他Unit也使用? (我試過 extern int var_name; 不行喔..) 謝謝就是要用 extern 呀!!! 例如,在專案中開兩個表單 Form1 及 Form2 分別在 Unit1.cpp/Unit1.hpp 及 Unit2.cpp/Unit2.hpp ,你應該可以在 Unit1.cpp 中看到 TForm1 *Form1; 在 Unit1.hpp 中看到 extern PACKAGE TForm1 *Form1; 同樣,可以在 Unit2.cpp 中看到 TForm2 *Form2; 在 Unit2.hpp 中看到 extern PACKAGE TForm2 *Form2; 此時,在 Unit1.cpp 中如果想要使用 Form2 則只需要在 Unit1.cpp 的前面加上 #include "Unit2.hpp"就可以在 Unit1.cpp 中用 Form2->xxx 了。 如果要分享其他的變數,也是使用同樣的方式,不同的是,因為 TForm1,TForm2 就繼承自 TForm 所以都算是 VCL 元件,所以使用 extern PACKAGE 來分享,而一般的變數例如: int iShare; 則只需要在 Unit1.cpp 的前面宣告 int iShare; 在 Unit2.cpp 前宣告 extern int iShare; 就可以在 Unit2.cpp 中使用 iShare 了。
------
http://www.ViewMove.com |
lcsboy
版主 發表:87 回覆:622 積分:394 註冊:2002-06-18 發送簡訊給我 |
|
dllee
站務副站長 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
引言: 如果只是同一個project兩個不用Form之間的話, 就用這樣吧 在Form1用 From2 include "unit2.h" 然後就可以在Form1使用Form2定義的東東, 但是要定義在public裡 ex: Form2 public: int Value; Form1 Form2->Value=1234;對對對! 一定要放在 public 裡,否則就無法給別人使用,此外,也可以像寫 VCL 元件一樣,用 __published: 例如: private: AnsiString FString; AnsiString FReadOnlyString; __published: __property AnsiString String={read=FString,write=FString}; __property AnsiString ReadOnlyString={read=FReadOnlyString};用 __published 及 __property 可以限定某個屬性是唯讀或是唯寫或是可讀可寫,彈性較大。
------
http://www.ViewMove.com |
天外來客
初階會員 發表:22 回覆:199 積分:44 註冊:2001-11-27 發送簡訊給我 |
|
dllee
站務副站長 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
引言: 可是這樣作的話, 是不是code size就會變大? 如果不會的話, 這個方法是很好, 因為很多VCL的屬性都是這樣子作的實際的 Code Size 是一定會變大的!因為還要多記錄 property 名稱等等... 但是應該不會大太多吧,用 BCB/Delphi 作出來可以 Standalone 的執行檔都很大呀,會在乎多那 1、2K 嗎? 如果覺得作出來的執行檔檔案太多,就用執行檔壓縮工具壓一下就好啦,例如:UPX
------
http://www.ViewMove.com |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |