Delphi 2006語言新特性

2021-07-25 17:23:12 字數 2770 閱讀 5188

type

//非引用,可直接賦值,record不可繼承,object可繼承

trecord = record

const

//定義了常量後影響ctrl+shift+c自動完成

ta: integer = 0;

length: integer = 3;

private

fa: integer;

fb: integer;

procedure seta(const value: integer);

class var

fd: tlist;

public

constructor create(a, b: integer);//建構函式必須至少有乙個引數,析構函式需要自定義

procedure add(v: integer);

property a: integer read fa write seta;

end;

//在僅有常量和類變數時用做單例模式應該不錯

tclass = class sealed

const

a: byte = 100;//類常量,可以不定義型別

b: boolean = true;//類常量,也可以定義型別

class var

//類變數,相當於靜態變數,訪問時 類名.變數名

ft: integer;

//strict

private//嚴格的oo,即在同乙個unit中也不能訪問私有和保護成員了

fp: integer;

class procedure sett(const value: integer); static;

procedure setpt(const value: integer);

public

constructor create(c: integer);//類構造函式引數可有可無

//下面是類屬性,只能讀寫類變數,讀寫方法必須是類靜態方法,即前面加class,後面加static

class property vt: integer read ft write sett;

//注:使用類屬性時最好不使用一般屬性,否則無法ctrl+shift+c自動完成

property pt: integer read fp write setpt;//一般屬性,只能讀一般成員

end;

測試**:

procedure tform1.btn1click(sender: tobject);

var o: ^trecord;

c: trecord;

好: string;//中文變更名

tl: tlist;

p: pointer;

t: tclass;

begin

o := nil;

new(o);

o.a := 100;

trecord.fd := tlist.create;

好 := '你妹';

caption := format('sizeof:%d, length: %d, o^.a: %d 好%s', [sizeof(trecord), o.length, o.a, 好]);

dispose(o);

c.a := 100;

tl := tlist.create;

tl.add(pointer(100));

tl.add(pointer(200));

tl.add(pointer(300));

tl.add(pointer(400));

//for in 支援陣列和tlist(含getenumerator)

for p in tl do

begin

mmo1.lines.add(inttohex(integer(p), 8));

end;

t := tclass.create;//(5);

t.vt := 8;

dec(t.ft);

inc(t.vt);

t.pt := 1;

//inc(t.pt);

t.pt := t.pt - 1;

if tclass.b then

mmo1.lines.add(format('%d %d %d', [tclass.a, tclass.vt, t.vt]));

end;

constructor trecord.create(a, b: integer);

begin

fa := a;

fb := b;

end;

procedure trecord.seta(const value: integer);

begin

end;

procedure trecord.add(v: integer);

begin

end;

constructor tclass.create(c: integer);

begin

ft := c;

end;

class procedure tclass.sett(const value: integer);

begin

ft := ft + value;

end;

procedure tclass.setpt(const value: integer);

begin

ft := value;

end;

Delphi2006試用手記

今天旁邊宿舍的傢伙終於給我吧borland studio 2006整套下下來了 5cd哪 足足刻了我5張盤 不過 個人感覺這個產品應該是borland的終結產品了 刻下來以後紀念用也行啊 花了10分鐘左右裝上了borland studio 2006 裝了win32版和.net版 其他產品還有c bu...

Delphi2009新特性(1) Exit方法

在函式中,使用result作為返回變數,必須要等所有 執行完成 function tform1.abc x,y integer integer begin if y 0 then result 0 else result x y end delphi 2009,新增了exit方法,指定返回值,同時退...

c 11語言新特性

模板的閉符之間不需要空格 vector 等同於 vector nullptr取代0或者null 以auto完成型別自動推導 一致性初始化與初值列 使用大括號進行初始化動作,如 int values vectorv 初值列如 int j j is initialized by 0 int p q is...