|
@@ -5,7 +5,7 @@ program test_fail;
|
|
|
|
|
|
uses
|
|
uses
|
|
erroru;
|
|
erroru;
|
|
-
|
|
|
|
|
|
+
|
|
type
|
|
type
|
|
parrayobj = ^tarrayobj;
|
|
parrayobj = ^tarrayobj;
|
|
tarrayobj = object
|
|
tarrayobj = object
|
|
@@ -24,7 +24,6 @@ program test_fail;
|
|
var
|
|
var
|
|
pa1, pa2 : parrayobj;
|
|
pa1, pa2 : parrayobj;
|
|
ta1, ta2 : tarrayobj;
|
|
ta1, ta2 : tarrayobj;
|
|
- availmem : longint;
|
|
|
|
|
|
|
|
constructor tarrayobj.init(do_fail : boolean);
|
|
constructor tarrayobj.init(do_fail : boolean);
|
|
begin
|
|
begin
|
|
@@ -40,8 +39,8 @@ program test_fail;
|
|
|
|
|
|
procedure tarrayobj.test;
|
|
procedure tarrayobj.test;
|
|
begin
|
|
begin
|
|
- Writeln('@self = ',longint(@self));
|
|
|
|
- Writeln('typeof = ',longint(typeof(self)));
|
|
|
|
|
|
+ Writeln('@self = ',ptrint(@self));
|
|
|
|
+ Writeln('typeof = ',ptrint(typeof(self)));
|
|
if ar[1]=1 then
|
|
if ar[1]=1 then
|
|
Writeln('Init called');
|
|
Writeln('Init called');
|
|
if ar[2]=2 then
|
|
if ar[2]=2 then
|
|
@@ -66,33 +65,33 @@ program test_fail;
|
|
Inherited test;
|
|
Inherited test;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+ var
|
|
|
|
+ mem : sizeint;
|
|
begin
|
|
begin
|
|
|
|
+ mem:=0;
|
|
|
|
+ DoMem(mem);
|
|
new(pa1,init(false));
|
|
new(pa1,init(false));
|
|
- getheapstatus(hstatus);
|
|
|
|
- writeln('After successful new(pa1,init), memory used = ',hstatus.CurrHeapUsed);
|
|
|
|
|
|
+ writeln('After successful new(pa1,init)');
|
|
new(pa2,init(true));
|
|
new(pa2,init(true));
|
|
- getheapstatus(hstatus);
|
|
|
|
- writeln('After unsuccessful new(pa2,init), memory used = ',hstatus.CurrHeapUsed);
|
|
|
|
- writeln('pa1 = ',longint(pa1),' pa2 = ',longint(pa2));
|
|
|
|
|
|
+ writeln('After unsuccessful new(pa2,init)');
|
|
|
|
+ writeln('pa1 = ',ptrint(pa1),' pa2 = ',ptrint(pa2));
|
|
writeln('Call to pa1^.test after successful init');
|
|
writeln('Call to pa1^.test after successful init');
|
|
pa1^.test;
|
|
pa1^.test;
|
|
dispose(pa1,done);
|
|
dispose(pa1,done);
|
|
- getheapstatus(hstatus);
|
|
|
|
- writeln('After release of pa1, memory used = ',hstatus.CurrHeapUsed);
|
|
|
|
|
|
+ writeln('After release of pa1');
|
|
|
|
+ DoMem(mem);
|
|
pa1:=new(pbigarrayobj,good_init);
|
|
pa1:=new(pbigarrayobj,good_init);
|
|
- getheapstatus(hstatus);
|
|
|
|
- writeln('After successful pa1:=new(pbigarrayobj,good_init), memory used = ',hstatus.CurrHeapUsed);
|
|
|
|
|
|
+ writeln('After successful pa1:=new(pbigarrayobj,good_init)');
|
|
pa2:=new(pbigarrayobj,wrong_init);
|
|
pa2:=new(pbigarrayobj,wrong_init);
|
|
- getheapstatus(hstatus);
|
|
|
|
- writeln('After unsuccessful pa2:=new(pbigarrayobj,wrong_init), memory used = ',hstatus.CurrHeapUsed);
|
|
|
|
- writeln('pa1 = ',longint(pa1),' pa2 = ',longint(pa2));
|
|
|
|
|
|
+ writeln('After unsuccessful pa2:=new(pbigarrayobj,wrong_init)');
|
|
|
|
+ writeln('pa1 = ',ptrint(pa1),' pa2 = ',ptrint(pa2));
|
|
writeln('Call to pa1^.test after successful init');
|
|
writeln('Call to pa1^.test after successful init');
|
|
pa1^.test;
|
|
pa1^.test;
|
|
ta1.init(false);
|
|
ta1.init(false);
|
|
writeln('Call to ta1.test after successful init');
|
|
writeln('Call to ta1.test after successful init');
|
|
ta1.test;
|
|
ta1.test;
|
|
ta2.init(true);
|
|
ta2.init(true);
|
|
- writeln('typeof(ta2) = ',longint(typeof(ta2)),' after unsuccessful init');
|
|
|
|
|
|
+ writeln('typeof(ta2) = ',ptrint(typeof(ta2)),' after unsuccessful init');
|
|
Writeln('Trying to call ta2.test (should generate a Run Time Error)');
|
|
Writeln('Trying to call ta2.test (should generate a Run Time Error)');
|
|
ta2.test;
|
|
ta2.test;
|
|
end.
|
|
end.
|