1{$bitpacking on}
2
3type
4  tenum = (ea,eb,ec,ed,ee,ef,eg,eh);
5  tr = packed record
6         a: 0..3;    // 2 bits
7         i: int64;
8         c: boolean; // 1 bit
9         d: 0..31;   // 5 bits
10         e: tenum;   // 3 bits
11       end;
12
13procedure t(var r2: tr);
14var
15  r: tr;
16begin
17  r.a := 2;
18  r.i := 1234567890123456789;
19  r.c := true;
20  r.d := 5;
21  r.e := ed;
22  r2 := r;
23end;
24
25var
26  r: tr;
27
28begin
29  t(r);
30  if (r.a <> 2) or
31     (r.i <> 1234567890123456789) or
32     (not r.c) or
33     (r.d <> 5) or
34     (r.e <> ed) then
35    halt(1);
36end.
37