Thema: Delphi prozedurvariable

Einzelnen Beitrag anzeigen

Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#6
  Alt 3. Jul 2003, 11:49
Ah ja So nennen wir die heute

Also es geht um Prozedurale Typen; hier mal ein Auszug aus dem Delphi Language Guide
Zitat:
Prozeduren und Funktionen können als Wert betrachtet und einer Variablen zuge-wiesen werden, so dass sie sich als Parameter übergeben lassen. Dieses Verfahren wird durch sogenannte prozedurale Typen ermöglicht. Nehmen wir an, Sie definieren eine Funktion mit dem Namen Calc, die zwei Integer-Parameter übernimmt und einen Integer-Wert zurückgibt:

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

Sie können die Calc-Funktion nun der Variablen F zuweisen:

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

Wenn Sie im Kopf einer Prozedur oder Funktion den Bezeichner nach dem Wort procedure bzw. function entfernen, erhalten Sie den Namen eines prozeduralen Typs.
Dieser Typname kann direkt in einer Variablendeklaration (siehe oben) verwendet oder zur Deklaration neuer Typen benutzt werden:
Delphi-Quellcode:
type
TIntegerFunction = function: Integer;
TProcedure = procedure;
TStrProc = procedure(const S: string);
TMathFunc = function(X: Double): Double;
var
F: TIntegerFunction; { F ist eine parameterlose Funktion, die einen Integer zurückgibt }
Proc: TProcedure; { Proc ist eine parameterlose Prozedur }
SP: TStrProc; { SP ist eine Prozedur, die einen String-Parameter übernimmt }
M: TMathFunc; { M ist eine Funktion, die einen Double-Parameter (reeller Wert) übernimmt und einen Double-Wert zurückgibt }
procedure FuncProc(P: TIntegerFunction); { FuncProc ist eine Prozedur, deren einziger Parameter eine parameterlose Funktion ist, die einen Integer zurückgibt }
Alle oben aufgeführten Variablen sind sogenannte Prozedurenzeiger, also Zeiger auf
die Adresse einer Prozedur oder Funktion.
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat