3
interface //#################################################################### ■
5
type //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【型】
7
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【レコード】
9
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【クラス】
11
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TArray1D<T_Item>
13
TArray1D<T_Item> = class
18
function XtoI( const X_:Integer ) :Integer; inline;
20
_Item :array of T_Item;
24
function GetItem( const X_:Integer ) :T_Item; virtual;
25
procedure SetItem( const X_:Integer; const Item_:T_Item ); virtual;
26
procedure SetCountX( const CountX_:Integer ); virtual;
27
procedure SetMarginX( const MarginX_:Integer ); virtual;
29
constructor Create; overload;
30
constructor Create( const CountX_:Integer ); overload;
31
constructor Create( const CountX_,MarginX_:Integer ); overload;
32
procedure AfterConstruction; override;
33
destructor Destroy; override;
35
property Item[ const X_:Integer ] :T_Item read GetItem write SetItem; default;
36
property Count :Integer read _CountX write SetCountX;
37
property CountX :Integer read _CountX write SetCountX;
38
property Margin :Integer read _MarginX write SetMarginX;
39
property MarginX :Integer read _MarginX write SetMarginX;
41
class procedure Swap( var Array0_,Array1_:TArray1D<T_Item> ); static;
42
procedure MakeEdgeLoop;
45
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TBricArray1D<T_Item>
47
TBricArray1D<T_Item> = class( TArray1D<T_Item> )
51
function GetGridX :Integer;
52
procedure SetGridX( const GridX_:Integer );
55
property Bric[ const X_:Integer ] :T_Item read GetItem write SetItem; default;
56
property BricN :Integer read _CountX write SetCountX;
57
property BricX :Integer read _CountX write SetCountX;
58
property GridN :Integer read GetGridX write SetGridX;
59
property GridX :Integer read GetGridX write SetGridX;
62
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TGridArray1D<T_Item>
64
TGridArray1D<T_Item> = class( TArray1D<T_Item> )
68
function GetBricX :Integer;
69
procedure SetBricX( const BricX_:Integer );
71
constructor Create; overload;
72
constructor Create( const BricX_:Integer ); overload;
73
constructor Create( const BricX_,MarginX_:Integer ); overload;
74
destructor Destroy; override;
76
property Grid[ const X_:Integer ] :T_Item read GetItem write SetItem; default;
77
property GridN :Integer read _CountX write SetCountX;
78
property GridX :Integer read _CountX write SetCountX;
79
property BricN :Integer read GetBricX write SetBricX;
80
property BricX :Integer read GetBricX write SetBricX;
83
//const //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【定数】
85
//var //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【変数】
87
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【ルーチン】
89
implementation //############################################################### ■
91
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【レコード】
93
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【クラス】
95
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TArray1D<T_Item>
97
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& private
99
/////////////////////////////////////////////////////////////////////// メソッド
101
procedure TArray1D<T_Item>.MakeArray;
103
_AllX := _MarginX + _CountX + _MarginX;
105
SetLength( _Item, _AllX );
108
function TArray1D<T_Item>.XtoI( const X_:Integer ) :Integer;
110
Result := _MarginX + X_;
113
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& protected
115
/////////////////////////////////////////////////////////////////////// アクセス
117
procedure TArray1D<T_Item>.SetCountX( const CountX_:Integer );
119
_CountX := CountX_; MakeArray;
122
procedure TArray1D<T_Item>.SetMarginX( const MarginX_:Integer );
124
_MarginX := MarginX_; MakeArray;
127
function TArray1D<T_Item>.GetItem( const X_:Integer ) :T_Item;
129
Result := _Item[ XtoI( X_ ) ];
132
procedure TArray1D<T_Item>.SetItem( const X_:Integer; const Item_:T_Item );
134
_Item[ XtoI( X_ ) ] := Item_;
137
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& public
139
constructor TArray1D<T_Item>.Create;
144
constructor TArray1D<T_Item>.Create( const CountX_:Integer );
146
Create( CountX_, 0 );
149
constructor TArray1D<T_Item>.Create( const CountX_,MarginX_:Integer );
154
_MarginX := MarginX_;
157
procedure TArray1D<T_Item>.AfterConstruction;
162
destructor TArray1D<T_Item>.Destroy;
168
/////////////////////////////////////////////////////////////////////// メソッド
170
class procedure TArray1D<T_Item>.Swap( var Array0_,Array1_:TArray1D<T_Item> );
174
A := Array0_; Array0_ := Array1_; Array1_ := A;
177
procedure TArray1D<T_Item>.MakeEdgeLoop;
181
for X := -_MarginX to -1 do Item[ X ] := Item[ X + _CountX ];
182
for X := _CountX to _CountX+_MarginX-1 do Item[ X ] := Item[ X - _CountX ];
185
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TBricArray1D<T_Item>
187
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& private
189
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& protected
191
/////////////////////////////////////////////////////////////////////// アクセス
193
function TBricArray1D<T_Item>.GetGridX :Integer;
198
procedure TBricArray1D<T_Item>.SetGridX( const GridX_:Integer );
203
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& public
205
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TGridArray1D<T_Item>
207
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& private
209
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& protected
211
/////////////////////////////////////////////////////////////////////// アクセス
213
function TGridArray1D<T_Item>.GetBricX :Integer;
215
Result := _CountX - 1;
218
procedure TGridArray1D<T_Item>.SetBricX( const BricX_:Integer );
220
_CountX := BricX_ + 1; MakeArray;
223
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& public
225
constructor TGridArray1D<T_Item>.Create;
230
constructor TGridArray1D<T_Item>.Create( const BricX_:Integer );
235
constructor TGridArray1D<T_Item>.Create( const BricX_,MarginX_:Integer );
239
_CountX := BricX_ + 1;
242
destructor TGridArray1D<T_Item>.Destroy;
248
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$【ルーチン】
250
//############################################################################## □
252
initialization //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 初期化
254
finalization //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 最終化
256
end. //######################################################################### ■