免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
DELPHI中函數(shù)、過程變量的聲明與應(yīng)用

Procedure型變量:?

在DELPHI中,函數(shù)、過程的地址可以賦給一個(gè)特殊類型的變量,變量可用如下方式聲明:?

var p : procedure(num:integer);?//過程?

或:?

var f : function(num:integer):integer;?//函數(shù)?

也可定義一個(gè)過程(或函數(shù))類型,再定義該類型的變量,如:?

type TMyProc = Procedure(num:integer);?

var p : TMyProc;?

?

example:?

type TMyProc= procedure (filename : string);?//定義過程類型?

procedure clearfile(filename : string);?

begin?

{….}?

end ;?

…?

var p:TMyProc;?//定義過程變量?

…?

p := clearfile;?//將具體實(shí)現(xiàn)的過程地址賦給過程變量?

…?

p(‘log.dat’);?//調(diào)用過程?

…?

可以將該類型的變量賦nil表示清除。?

通過這種方式定義函數(shù)或過程的變量十分有用,如可用于裝入動(dòng)態(tài)鏈接庫、根據(jù)不同的條件調(diào)用不同的過程等。?

?

Method型變量:?

在DELPHI中還有一種特殊的過程,叫做方法(method),在定義方法類型的時(shí)候要在過程定義的后面加上 of object,如:?

type TMyMethod=Procedure(num:integer) of object;?

同樣也可定義過程類型的變量:?

var m : TMyMethod;?

可以將該類型的變量賦nil表示清除。?

方法類型常用于類定義中的事件定義,如控件中常用的OnClick事件,它的類型定義如下:?

type TNotifyEvent=Procedure(Sender : TObject) of object;?

?

區(qū)別:?

procedure與method的定義雖然很相似,但兩者并不一樣,也不通用,不能互相賦值。procedure型變量是一個(gè)指針指向?qū)嶋H的代碼地址,而method型變量實(shí)際是一對指針,第一個(gè)指向代碼的地址,第二個(gè)指向包含該代碼的類的一個(gè)實(shí)例。區(qū)別一個(gè)過程是否是方法就看它是否屬于一個(gè)類的成員。?

Example:?

Type?

TMyProc=Procedure(str : String);?//定義普通過程類型?

TMyMethod=Procedure(str : String) of object;?//定義方法類型?

…?

//下面的代碼是一個(gè)普通的過程?

Procedure Proc1(str : String);?

Begin?

ShowMessage(str);?

End;?

…?

//下面的代碼是一個(gè)方法?

Procedure TForm1.Proc2(str : String);?

Begin?

ShowMessage(str);?

End;?

…?

var p : TMyProc;?

m : TMyMethod;?

…?

p := Proc1;?//正確?

m := Proc2;?//正確?

p := Proc2;?//錯(cuò)誤!?

m := Proc1;?//錯(cuò)誤!?

?

在類型定義中,類型的屬性(如事件)常用以下方式定義在published關(guān)鍵字后,如:?

property OnClick : TNotifyEvent read FOnClick write FOnClick;?//FOnClick為類的方法型私有成員變量?

但published關(guān)鍵字后的屬性不能是普通的過程類型。普通過程類型只能在類的private、public、protected成員中。而方法類型可以是類的任何類型成員。?

Example:?

Type?

TMyClass = class(TObject)?

Private?

FOnMyMethod: TMyMethod;?

FOnMyProc : TMyProc;?

Public?

Property OnMyProc1 : TMyProc read FOnMyProc write FOnMyProc;?//正確?

Published?

Property OnMyMethod : TMyMethod read FOnMyMethod write FOnMyMethod;?//正確?

Property OnMyProc2 : TMyProc read FOnMyProc write FOnMyProc;?//錯(cuò)誤!?

End;?

來源:http://www.icode9.com/content-4-183601.html
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
delphi dll 調(diào)用技巧
Delphi 過程與函數(shù)
Delphi指針及其它(轉(zhuǎn))
Delphi 編寫DLL動(dòng)態(tài)鏈接庫文件的知識
delphi 定義全局變量
用delphi編寫自己的可視化控件_delphi教程
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服