blob: 0c7ecddf9c23babed285b7e669ae62edd9cc477b (
plain)
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
|
{ Source provided for Free Pascal Bug Report 3971 }
{ Submitted by "Thomas Schatzl" on 2005-05-16 }
{ e-mail: }
type
TDemo1 = object
member1 : byte;
member2 : longint;
member7 : ^longint;
member3 : int64;
member4 : byte;
member5 : longint;
//x : boolean;
//
member6 : int64;
x : boolean;
end;
TDemo = object
member1 : byte;
member5 : longint;
member6 : int64;
y : array[0..2] of TDemo1;
constructor init;
destructor Destroy;
procedure doSomething;
procedure doSomething2;
end;
var
x : array[0..2] of TDemo;
z : TDemo;
w : TDemo1;
constructor TDemo.init();
begin
WriteLn('Create start');
inherited;
WriteLn('Create end');
end;
destructor TDemo.Destroy();
begin
WriteLn('Destroy start');
inherited;
WriteLn('Destroy end');
end;
procedure TDemo.doSomething;
begin
WriteLn('doSomething');
end;
procedure TDemo.doSomething2;
begin
WriteLn('doSomething');
end;
begin
z.init;
if ((ptrint(@z.y)-ptrint(@z)) mod sizeof(ptrint))<>0 then
halt(1);
if ((ptrint(@z.y[0].member7)-ptrint(@z)) mod sizeof(ptrint))<>0 then
halt(1);
z.destroy;
WriteLn(sizeof(TDemo), ' ', sizeof(TDemo1));
end.
|