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

delhpi語法問題

答題得分者是:Coffee
inglong
初階會員


發表:28
回覆:27
積分:36
註冊:2004-08-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-05-07 15:43:22 IP:220.134.xxx.xxx 未訂閱
請問

DoDblClick : procedure of object ;

是什麼意思

跟procedure DoDbClick ; 不同在哪裡?

第一次看到這樣的寫法

------
何需Coding爭峰
千人指 萬人鋒
敢問Coding頂峰
三尺秋水塵不染
天下無雙
adonis
高階會員


發表:139
回覆:258
積分:159
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-05-07 16:33:04 IP:210.201.xxx.xxx 訂閱
inglong,您好
請參考 http://blog.csdn.net/coffeemay/archive/2006/09/23/1267628.aspx

我也在學習中,若有錯謬請見諒 ~

===================引 用 inglong 文 章===================
請問

DoDblClick : procedure of object ;

是什麼意思

跟procedure DoDbClick ;? 不同在哪裡?

第一次看到這樣的寫法

------
我也在努力學習中,若有錯謬請見諒。
Coffee
版主


發表:31
回覆:878
積分:561
註冊:2006-11-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-05-07 16:44:05 IP:220.130.xxx.xxx 訂閱
DoDblClick : procedure of object ;
屬於物件的程序

procedure DoDbClick ;
一般程序

意指被描述為of object的函式是屬於類別函式,與一般的函式不同。
在Delphi中,類別函式指標是無法指向一般函式
因此of object被用來指該函式是類別函式

以下為Delphi 7 Help(keyword : of object):
Procedural types allow you to treat procedures and functions as values that can be assigned to variables or passed to other procedures and functions. For example, suppose you define a function called Calc that takes two integer parameters and returns an integer:

function Calc(X,Y: Integer): Integer;

You can assign the Calc function to the variable F:

var F: function(X,Y: Integer): Integer;
F := Calc;

If you take any procedure or function heading and remove the identifier after the word procedure or function, what's left is the name of a procedural type. You can use such type names directly in variable declarations (as in the previous example) or to declare new types:

type
TIntegerFunction = function: Integer;
TProcedure = procedure;
TStrProc = procedure(const S: string);
TMathFunc = function(X: Double): Double;
var
F: TIntegerFunction; { F is a parameterless function that returns an integer }
Proc: TProcedure; { Proc is a parameterless procedure }
SP: TStrProc; { SP is a procedure that takes a string parameter }

M: TMathFunc; { M is a function that takes a Double (real) parameter
and returns a Double }
procedure FuncProc(P: TIntegerFunction); { FuncProc is a procedure whose only parameter
is a parameterless integer-valued function }

The previous variables are all procedure pointers--that is, pointers to the address of a procedure or function. If you want to reference a method of an instance object (see
Classes and objects), you need to add the words of object to the procedural type name. For example

type
TMethod = procedure of object;
TNotifyEvent = procedure(Sender: TObject) of object;

These types represent method pointers. A method pointer is really a pair of pointers; the first stores the address of a method, and the second stores a reference to the object the method belongs to. Given the declarations

type
TNotifyEvent = procedure(Sender: TObject) of object;
TMainForm = class(TForm)
procedure Butt MainForm.Butt Length(S);
end;
------
不論是否我發的文,在能力範圍皆很樂意為大家回答問題。
為了補我的能力不足之處,以及讓答案可以被重複的使用,希望大家能儘量以公開的方式問問題。
在引述到我的文時自然會儘量替各位想辦法,謝謝大家!
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-05-08 13:34:46 IP:61.64.xxx.xxx 訂閱
DoDblClick : procedure of object ;
屬於物件的程序的參數宣告,如沒有指定對應函數,使用會發生錯誤

procedure DoDbClick ;
一般程序的預先宣告,如果沒有指定編譯實體,可能在編譯時會錯,也又可能在執行時會錯(看編譯參數如何下)

不甚正確,應該加上紅色部分
Coffee
版主


發表:31
回覆:878
積分:561
註冊:2006-11-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-05-08 17:07:19 IP:220.130.xxx.xxx 訂閱
感謝指教!
------
不論是否我發的文,在能力範圍皆很樂意為大家回答問題。
為了補我的能力不足之處,以及讓答案可以被重複的使用,希望大家能儘量以公開的方式問問題。
在引述到我的文時自然會儘量替各位想辦法,謝謝大家!
系統時間:2017-12-11 19:09:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!