faqts : Computers : Programming : Languages : Delphi

+ Search
Add Entry AlertManage Folder Edit Entry Add page to http://del.icio.us/
Did You Find This Entry Useful?

Entry

Delphi: Procedure: Function: Dynamic: Parameter: Pass: How pass function as parameter: 0 parameters?

Feb 22nd, 2004 16:15
Knud van Eeden,


----------------------------------------------------------------------
--- Knud van Eeden --- 22 February 2004 - 11:25 pm -------------------

Delphi: Procedure: Function: Dynamic: Parameter: Pass: How pass 
function as parameter: 0 parameters?

---
---

Steps: Overview:

 1. Create a new application

 2. Put e.g. a button on the form

 3. Add the following text

     type TMyFunctionAsParameter = Function: string;

     var myfunctionasparameter : TMyFunctionAsParameter;

 4. -Create now one or more functions without parameters

      function FNTestOne: string;
      begin
       result := 'FNTestOne';
      end;

      function FNTestTwo: string;
      begin
       result := 'FNTestOne';
      end;

 5. -Call then the corresponding function by passing
     the name of that function as a parameter by

     1. first assigning the name to the 'var' variable

     2. then calling that 'var' variable with some
        parameter

         myfunctionasparameter := FNTestOne;
         s := myfunctionasparameter;
         ShowMessage( s );

         myfunctionasparameter := FNTestTwo;
         s := myfunctionasparameter;
         ShowMessage( s );

 6. -So all together this becomes:

--- cut here ---------------------------------------------------------

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, 
Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function FNTestOne: string;
begin
 result := 'FNTestOne';
end;

function FNTestTwo: string;
begin
 result := 'FNTestOne';
end;

procedure TForm1.Button1Click(Sender: TObject);
 type TMyFunctionAsParameter = Function: string;
 var myfunctionasparameter : TMyFunctionAsParameter;
 var s : string;
begin
 myfunctionasparameter := FNTestOne;
 s := myfunctionasparameter;
 ShowMessage( s );
 //
 myfunctionasparameter := FNTestTwo;
 s := myfunctionasparameter;
 ShowMessage( s );
end;

end.

--- cut here ---------------------------------------------------------

---
---

Internet: see also:

---

Delphi: Procedure: Function: Dynamic: Can you give overview passing 
function/procedure as parameter?
http://www.faqts.com/knowledge_base/view.phtml/aid/28931/fid/175

----------------------------------------------------------------------