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

宣告變數?

 
jlamlsc
初階會員


發表:55
回覆:60
積分:28
註冊:2002-06-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-07-11 13:54:59 IP:203.198.xxx.xxx 未訂閱
請問如何宣告一個變數,可以在同一個Project裡的其他Unit也使用? (我試過 extern int var_name; 不行喔..) 謝謝
Apollo.tw
一般會員


發表:3
回覆:4
積分:1
註冊:2002-07-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-07-16 23:38:12 IP:61.30.xxx.xxx 未訂閱
引言: 請問如何宣告一個變數,可以在同一個Project裡的其他Unit也使用? (我試過 extern int var_name; 不行喔..) 謝謝
是你不會用,或是用的方式不對吧!! 要把你要做的事說明詳細一點嗎?
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-07-17 12:42:36 IP:61.231.xxx.xxx 未訂閱
引言: 請問如何宣告一個變數,可以在同一個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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-07-17 15:50:12 IP:61.222.xxx.xxx 未訂閱
如果只是同一個project兩個不用Form之間的話, 就用這樣吧 在Form1用 From2 include "unit2.h" 然後就可以在Form1使用Form2定義的東東, 但是要定義在public裡 ex: Form2 public: int Value; Form1 Form2->Value=1234;
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-07-18 09:51:22 IP:61.231.xxx.xxx 未訂閱
引言: 如果只是同一個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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-07-18 13:06:23 IP:211.23.xxx.xxx 未訂閱
可是這樣作的話, 是不是code size就會變大? 如果不會的話, 這個方法是很好, 因為很多VCL的屬性都是這樣子作的
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-07-19 14:56:38 IP:61.231.xxx.xxx 未訂閱
引言: 可是這樣作的話, 是不是code size就會變大? 如果不會的話, 這個方法是很好, 因為很多VCL的屬性都是這樣子作的
實際的 Code Size 是一定會變大的!因為還要多記錄 property 名稱等等... 但是應該不會大太多吧,用 BCB/Delphi 作出來可以 Standalone 的執行檔都很大呀,會在乎多那 1、2K 嗎? 如果覺得作出來的執行檔檔案太多,就用執行檔壓縮工具壓一下就好啦,例如:UPX
------
http://www.ViewMove.com
系統時間:2024-04-24 15:10:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!