blob: 21603496f41bf82e7fd183a557f867419ee0f3f2 (
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
|
{ Source provided for Free Pascal Bug Report 3589 }
{ Submitted by "Michalis Kamburelis" on 2005-01-23 }
{ e-mail: michalis@camelot.homedns.org }
{$ifdef FPC} {$mode objfpc} {$endif}
{$assertions on}
uses Classes;
type
TBoxedInt = class(TCollectionItem)
public
Value: Integer;
end;
var
C: TCollection;
begin
C := TCollection.Create(TBoxedInt);
try
TBoxedInt(C.Add).Value := 1;
TBoxedInt(C.Add).Value := 2;
TBoxedInt(C.Add).Value := 3;
TBoxedInt(C.Insert(0)).Value := 4; { 4 1 2 3 }
TBoxedInt(C.Insert(3)).Value := 5; { 4 1 2 5 3 }
TBoxedInt(C.Insert(5)).Value := 6; { 4 1 2 5 3 6 }
{ Writeln(
TBoxedInt(C.Items[0]).Value, ' ',
TBoxedInt(C.Items[1]).Value, ' ',
TBoxedInt(C.Items[2]).Value, ' ',
TBoxedInt(C.Items[3]).Value, ' ',
TBoxedInt(C.Items[4]).Value, ' ',
TBoxedInt(C.Items[5]).Value);}
Assert(
(TBoxedInt(C.Items[0]).Value = 4) and
(TBoxedInt(C.Items[1]).Value = 1) and
(TBoxedInt(C.Items[2]).Value = 2) and
(TBoxedInt(C.Items[3]).Value = 5) and
(TBoxedInt(C.Items[4]).Value = 3) and
(TBoxedInt(C.Items[5]).Value = 6));
finally C.Free end;
end.
|