fpc/tests/webtbs/tw4009.pp
2005-12-20 08:11:59 +00:00

40 lines
773 B
ObjectPascal

{ Source provided for Free Pascal Bug Report 4009 }
{ Submitted by "Daniël Mantione" on 2005-05-23 }
{ e-mail: daniel@freepascal.org }
program testpointercalcbug;
{$R+}
{$Q+}
type Pheader=^Theader;
Theader=record
x:cardinal
end;
Ppayload=^Tpayload;
Tpayload=record
s:string;
end;
Trecordwithheader=record
header:Theader;
payload:Tpayload;
end;
{$ifndef fpc} ptruint = cardinal; {$endif}
var r:Trecordwithheader;
p:Ppayload;
h:Pheader;
l,l2 : cardinal;
begin
p:=@r.payload;
{Calculate address of header from address of payload.}
h:=Pheader(ptruint(p)-shortint(sizeof(Theader)));
writeln(ptruint(h));
l:=$ffffffff;
l2:=1;
writeln(l-l2);
end.