乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      DELPHI中函數(shù)、過程變量的聲明與應用

       印度阿三17 2019-05-07

      Procedure型變量:?

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

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

      或:?

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

      也可定義一個過程(或函數(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;?//將具體實現(xiàn)的過程地址賦給過程變量?

      …?

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

      …?

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

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

      ?

      Method型變量:?

      在DELPHI中還有一種特殊的過程,叫做方法(method),在定義方法類型的時候要在過程定義的后面加上 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型變量是一個指針指向?qū)嶋H的代碼地址,而method型變量實際是一對指針,第一個指向代碼的地址,第二個指向包含該代碼的類的一個實例。區(qū)別一個過程是否是方法就看它是否屬于一個類的成員。?

      Example:?

      Type?

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

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

      …?

      //下面的代碼是一個普通的過程?

      Procedure Proc1(str : String);?

      Begin?

      ShowMessage(str);?

      End;?

      …?

      //下面的代碼是一個方法?

      Procedure TForm1.Proc2(str : String);?

      Begin?

      ShowMessage(str);?

      End;?

      …?

      var p : TMyProc;?

      m : TMyMethod;?

      …?

      p := Proc1;?//正確?

      m := Proc2;?//正確?

      p := Proc2;?//錯誤!?

      m := Proc1;?//錯誤!?

      ?

      在類型定義中,類型的屬性(如事件)常用以下方式定義在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;?//錯誤!?

      End;?

      來源:http://www./content-4-183601.html

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多