Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
fpc-src / usr / share / fpcsrc / 3.2.0 / tests / webtbs / tw29086.pp
Size: Mime:
program project1;

{$mode objfpc}{$h+}

type
  ITestInt = interface
    function GetN(a:Integer):Integer;
    function GetX(a:Integer):Integer;
  end;

  { TIntTest }

  TIntTest = class(TInterfacedObject,ITestInt)
    function GetN(a: Integer): Integer;
    function GetX(a: Integer): Integer;
  end;

  TIntTestVal = record
    FTestInt : ITestInt;
  end;

  TIntTestFunc = function(a:Integer):Integer of object;

  TIntTestInclude = class
    FValue : TIntTestVal;
  end;

  ttestobj = object
    a, b : TIntTestFunc;
  end;

var
  inttest : TIntTest;
  inttestvalinc : TIntTestInclude;
  x : ttestobj;

{ TIntTest }

function TIntTest.GetN(a: Integer): Integer;
begin
  Result:=a+1;
end;

function TIntTest.GetX(a: Integer): Integer;
begin
  Result:=a+2;
end;


begin
  inttest:=TIntTest.Create;
  inttestvalinc:=TIntTestInclude.Create;
  inttestvalinc.FValue.FTestInt:=inttest;
  x.a := @inttestvalinc.FValue.FTestInt.GetN;
  x.b := @inttestvalinc.FValue.FTestInt.GetX;
  writeln(x.a(1));
  writeln(x.b(1));
end.