1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
|
{%region FooFunc}
{$IFDEF FooFunc_Param}
//procedure FooFunc(
ArgProcedure: TProcedure; var VArgProcedure: TProcedure;
ArgFunction: TFunction; var VArgFunction: TFunction;
ArgObjProcedure: TObjProcedure; var VArgObjProcedure: TObjProcedure;
ArgObjFunction: TObjFunction; var VArgObjFunction: TObjFunction;
{$ENDIF}
{$IFDEF FooFunc_LocalVar}
//var
VarProcedureA: procedure(a1: Integer; var a2: String);
VarFunctionA: function(a1: Integer; var a2: String): Integer;
VarObjProcedureA: procedure(a1: Integer; var a2: String) of object;
VarObjFunctionA: function(a1: Integer; var a2: String): Integer of object;
{$ENDIF}
{$IFDEF FooFunc_Body}
//begin
VarProcedureA := ArgProcedure;
VarFunctionA := ArgFunction;
VarObjProcedureA := ArgObjProcedure;
VarObjFunctionA := ArgObjFunction;
{$ENDIF}
{%endregion FooFunc}
{%region GLOBAL}
{$IFDEF Global_Implementation}
procedure ProcProcedure(a1: Integer; var a2: String); begin end;
function FuncFunction(a1: Integer; var a2: String): Integer; begin end;
type
TMethodHolderClass = class
public
procedure ProcObjProcedure(a1: Integer; var a2: String);
function FuncObjFuntion(a1: Integer; var a2: String): Integer;
end;
procedure TMethodHolderClass.ProcObjProcedure(a1: Integer; var a2: String); begin end;
function TMethodHolderClass.FuncObjFuntion(a1: Integer; var a2: String): Integer; begin end;
{$ENDIF}
{$IFDEF Global_Type}
//type
TProcedure = procedure(a1: Integer; var a2: String);
TFunction = function(a1: Integer; var a2: String): Integer;
TObjProcedure = procedure(a1: Integer; var a2: String) of object;
TObjFunction = function(a1: Integer; var a2: String): Integer of object;
{$ENDIF}
{$IFDEF Global_Var}
//var
MethodHolderClass: TMethodHolderClass;
GlobProcedure: TProcedure;
GlobFunction: TFunction;
GlobObjProcedure: TObjProcedure;
GlobObjFunction: TObjFunction;
{$ENDIF}
{$IFDEF Global_Body}
//begin
MethodHolderClass := TMethodHolderClass.Create;
GlobProcedure := @ProcProcedure;
GlobFunction := @FuncFunction;
GlobObjProcedure := @MethodHolderClass.ProcObjProcedure;
GlobObjFunction := @MethodHolderClass.FuncObjFuntion;
{$ENDIF}
{$IFDEF Global_Body_NIL}
//begin
GlobProcedure := nil;
GlobFunction := nil;
GlobObjProcedure := nil;
GlobObjFunction := nil;
{$ENDIF}
{$IFDEF Global_Call_FooFunc}
//FooFunc(
GlobProcedure, GlobProcedure,
GlobFunction, GlobFunction,
GlobObjProcedure, GlobObjProcedure,
GlobObjFunction, GlobObjFunction,
{$ENDIF}
{%endregion GLOBAL}
|