Delphi的學習筆記十三 屬性1

2021-06-12 02:58:25 字數 1120 閱讀 7652

首先我們來看一下屬性的定義:

tmyclass = class(tobject)

private

fname: string;

procedure setname(const value: string);

published

property name: string read fname write setname;

end;

沒有指定型別的屬性稱為屬性覆蓋。

2、read、write 兩個關鍵字至少要存在乙個, 如果只有乙個就成了唯讀屬性或只寫屬性;

3、屬性名後面也要指定型別(必須是內建型別或定義在前面的型別), 訪問的型別必須要和它一致;

4、屬性用到的字段與方法一定要宣告在屬性前面;

5、如果屬性讀(read)的是方法, 那麼這個方法一定是個函式, 且返回值與屬性型別一致;

如果屬性是非陣列屬性, 該函式是無引數的, 譬如: function getname: string;

6、如果屬性寫(write)的是方法(一般也不會是字段), 那麼這個方法一定是個過程;如果屬性是非陣列屬性, 該過程必須只有乙個引數, 引數型別必須和屬性一致; 並且引數必須是傳值的; 譬如: procedure setname(s: string); 或者 procedure setname(const s: string);

7、屬性呼叫的方法不能是虛方法或動態方法; 不能是過載方法;

8、如果屬性在 published 區, 那它呼叫的方法只能使用預設的 register 呼叫約定;

9、屬性一般放在 published 區, 如果屬性不是公開的也就失去了屬性的意義;

10、如果自定義的類不需要 rtti 或許把屬性放到 public 區會更節省(個人認為);

11、屬性讀寫的變數或方法一般放在 private 區, 如果都公開了就用不著屬性了;

12、事件屬性讀寫的必須是方法, 不能是變數;

13、屬性只是乙個橋, 它沒有指標(它讀寫的變數和方法才有指標), 目的是方便訪問並提出訪問限制;

14、還有 delphi 的 ide 為書寫屬性提供了非常方便的快捷鍵, 譬如: 輸入: property name: string; 然後執行 ctrl+shift+c;

delphi學習筆記 TADOQuery

delphi 資料庫查詢 tadoquery 在乙個程式中你會多次查詢資料庫的,因此在你寫的查詢方法中定義乙個區域性的adoquery就可以了,它返回乙個資料集 recordset。最簡單的應用如下 function getdata recordset 獲取一張表中的全部資料 recordset是一...

Python學習筆記(十三)

模組包 if name main 軟體目錄結構規範 作業 atm 購物 程式 import 語句 import module1 module2 modulen 當我們使用import語句的時候,python直譯器通過自己的搜尋路徑 存在sys.path裡 進行搜尋from import 語句 fro...

Delphi 的學習筆記十 陣列

1.給動態陣列新增元素 delphi view plain copy type 定義陣列型別 tonearray array ofinteger procedure addarrayitem vararr tonearray x integer begin 設定陣列長度 1 setlength ar...