А я бы не стал делать справочник, как и поля под каждый день недели.
Предыдущий пост по поводу установки битов вполне разумен. Может просто непонятен. Вот 2 функции, которые реализуют преобразование массива флажков в целое число и обратно.
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | function BoolArrayToInt(CB : Array Of TCheckBox) : Integer ;
begin
If Length(CB) > 32 Then
Raise Exception . Create( 'Too many checkboxes.' );
Result := 0 ;
For I := Low(CB) To High(CB) Do
Begin
Reesult := Result Shl 1 ;
If CB[i].Checked Then Result := Result + 1 ;
End ;
end ;
procedure IntToBoolArray(AInt : Integer ; CB : Array Of TCheckBox);
var
I : Integer ;
begin
If Length(CB) > 32 Then
Raise Exception . Create( 'Too many checkboxes.' );
For I := High(CB) DownTo Low(CB) Do
Begin
CB[i].Checked := (AInt Or 1 ) = 1 ;
AInt := AInt Shr 1 ;
End ;
end ;
|