Показать сообщение отдельно
  #6  
Старый 24.08.2010, 19:33
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,105
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

А я бы не стал делать справочник, как и поля под каждый день недели.
Предыдущий пост по поводу установки битов вполне разумен. Может просто непонятен. Вот 2 функции, которые реализуют преобразование массива флажков в целое число и обратно.

Код:
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;
Ответить с цитированием