fpc/tests/webtbs/tw7281.pp
Jonas Maebe e4d48432d8 - removed svn:executable
git-svn-id: trunk@5015 -
2006-10-23 22:52:04 +00:00

67 lines
1.1 KiB
ObjectPascal

program test_intf;
{$mode objfpc}{$H+}
uses
SysUtils;
type
ITest = interface
procedure DoIt(AMsg : string);
end;
{ TTest }
TTest = class(TInterfacedObject,ITest)
protected
procedure DoIt(AMsg : string);
public
constructor Create();
destructor Destroy();override;
end;
var InstancesCount : Integer = 0;
{ TTest }
procedure TTest.DoIt(AMsg: string);
begin
WriteLn(AMsg);
end;
constructor TTest.Create();
begin
Inherited;
Inc(InstancesCount);
WriteLn('Creating >>> ',HexStr(PtrUInt(self),sizeof(PtrUInt)*2));
end;
destructor TTest.Destroy();
begin
Dec(InstancesCount);
WriteLn('Destroying >>> ',HexStr(PtrUInt(self),sizeof(PtrUInt)*2));
inherited Destroy();
end;
procedure proc1(ATest : ITest);
begin
ATest.DoIt(' called in proc1');
end;
procedure test();
begin
(TTest.Create() as ITest).DoIt(' called in test');
proc1(TTest.Create() as ITest);
proc1(TTest.Create() as ITest);
proc1(TTest.Create() as ITest);
proc1(TTest.Create() as ITest);
end;
begin
test();
WriteLn('Remaining instances ... ',InstancesCount);
if InstancesCount<>0 then
halt(1);
end.