Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
Delphi 2009 Professional
|
Re: Procedure als Parameter übergeben
5. Jan 2004, 12: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.
|
|
Zitat
|