Einzelnen Beitrag anzeigen

Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Procedure als Parameter übergeben

  Alt 5. Jan 2004, 11:15
Hallo,
Du kannst eine Methode (bzw einen Methodenzeiger) oder eine reguläre Prozedure übergeben.
Hier ist das Beispiel für den Methodenzeiger
Delphi-Quellcode:
unit Unit1;

interface

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

type

  TMyProc = function (p:pointer):integer of object;

  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    procedure Test(AProc : TMyProc);
    function AFunction(p:pointer):integer;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

function TForm1.AFunction(p: pointer): integer;
begin
  Result:=5;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Test(AFunction);
end;

procedure TForm1.Test(AProc: TMyProc);
var
  a : Integer;
begin
  a:=AProc(Nil);
  ShowMessage(IntToStr(a));
end;

end.
Und hier das Beispiel für die reguläre Procedure
Delphi-Quellcode:
unit Unit1;

interface

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

type

  TMyProc = function (p:pointer):integer ;

  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    procedure Test(AProc : TMyProc);
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

function AFunction(p: pointer): integer;
begin
  Result:=5;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Test(AFunction);
end;

procedure TForm1.Test(AProc: TMyProc);
var
  a : Integer;
begin
  a:=AProc(Nil);
  ShowMessage(IntToStr(a));
end;

end.
  Mit Zitat antworten Zitat