Есть 16 чекбоксов по OnClic на любом из чекбоксов нужно преобразовать их состояние в шестнадцатеричную систему и поместить в Edit.text
я сделал это в лоб:
Код:
var
d:integer;
s:string;
begin
d:=0;
if SDIAppForm.CheckBox1.Checked then d:=d+(1 shl 0) else d:=d+(0 shl 0);
if SDIAppForm.CheckBox2.Checked then d:=d+(1 shl 1) else d:=d+(0 shl 1);
if SDIAppForm.CheckBox3.Checked then d:=d+(1 shl 2) else d:=d+(0 shl 2);
if SDIAppForm.CheckBox4.Checked then d:=d+(1 shl 3 ) else d:=d+(0 shl 3);
if SDIAppForm.CheckBox5.Checked then d:=d+(1 shl 4 ) else d:=d+(0 shl 4);
if SDIAppForm.CheckBox6.Checked then d:=d+(1 shl 5 ) else d:=d+(0 shl 5);
if SDIAppForm.CheckBox7.Checked then d:=d+(1 shl 6 ) else d:=d+(0 shl 6);
if SDIAppForm.CheckBox8.Checked then d:=d+(1 shl 7 ) else d:=d+(0 shl 7);
if SDIAppForm.CheckBox9.Checked then d:=d+(1 shl 8 ) else d:=d+(0 shl 8);
if SDIAppForm.CheckBox10.Checked then d:=d+(1 shl 9 ) else d:=d+(0 shl 9);
if SDIAppForm.CheckBox11.Checked then d:=d+(1 shl 10 ) else d:=d+(0 shl 10);
if SDIAppForm.CheckBox12.Checked then d:=d+(1 shl 11 ) else d:=d+(0 shl 11);
if SDIAppForm.CheckBox13.Checked then d:=d+(1 shl 12 ) else d:=d+(0 shl 12);
if SDIAppForm.CheckBox14.Checked then d:=d+(1 shl 13 ) else d:=d+(0 shl 13);
if SDIAppForm.CheckBox15.Checked then d:=d+(1 shl 14 ) else d:=d+(0 shl 14);
if SDIAppForm.CheckBox16.Checked then d:=d+(1 shl 15 ) else d:=d+(0 shl 15);
s := Format('%0x',[d]);
SDIAppForm.edit4.Text:=s;
может кто подскажет как это сделать более оптимально (с точки зрения количества строк текста - насколько экономичным будет код программы - неважно, это нужно для отладки)
Нужно будет делать и обратное преобразование (по OnExit преобразовывать из Edit.text и заполнять чекбоксы, но над этим я пока не думал)