Wolfgang Chien's Homepage | Delphi學習筆記 - 問答篇 |
變數要宣告在哪裡可以讓所有的unit都可參照?
宣告於單元的 interface 節中, 那 uses 這個單元的程式單元可以存取到這個變數, 很可惜的不能作到所有的單元, 如果要'所有的', 那恐怕要'所有的'程式單元都 uses 這個單元
不過我想我沒有把問是說得很清楚:
我的問題是:
"變數" 宣告在interface 的private裡面和 var 裡面其它的unit都沒辦法存取那宣在interface 的private裡面和 var 裡面有什麼差別呢?
單元 uses 一個程式單元 B 後, B 即可存取到 A 單元定義於 interface 中的變數.程序.函數, 如果是類別(Class), 只能用到該類別中定義為 public 與 publish 的部分, 如果是繼承關係, 子階可以透過 inherited 呼叫到父階類別定義於保密等級在 protected 以上的方法
以下列的 Unit1 單元為例:
unit Unit1; interface uses ...; const _TAXRATE = 5; (* 其他的程式單元可以使用這個常數 *) type (* 曾經 uses 過 Unit1 的單元也可應用這個 TTestRecord 記錄型態 *) TTestRecord = record No: String[8]; Name: String[10]; end; TForm1 = class(TForm) private (* 這些是 TForm1 私有的資料.方法, 不對外公開 *) public (* 這部分為 TForm1 對外公開的部分 *) end; var (* 以下兩列, 凡是 uses 過 Unit1 的單元皆可存取 *) Form1: TForm1; iPublicInteger: integer; (* 其他的程式單元也可以呼叫 PadR 函數 *) function PadR(const Value: string): string; far; (* ======================= *) implementation (* ======================= *) {$R *.DFM} (* 這個變數是 Unit1 私有的'公用變數' *) var iOnlyUnit1CanProcess: integer; function PadR(const Value: string): string; begin end; end.
首頁 | 學習筆記 | 主題公園 | 軟體下載 | 關於本站 | 討論信群 | 相約下次 |