急求此二进制程序的写法...(100分)

  • 主题发起人 主题发起人 rzqcjwrz
  • 开始时间 开始时间
R

rzqcjwrz

Unregistered / Unconfirmed
GUEST, unregistred user!
我在编写一程序时,需要将checkbox所选中的内容以一定格式的二进制表示出来:
假设有8个checkbox,选中的为1,未选中的为0,按checkbox8checkbox7checkbox6checkbox5checkbox4checkbox3checkbox2checkbox1这样的次序排列,怎样写程序?
 
var
k: integer;
.......
k:=0;
if checkbox1.checked then k:=k+1;
if checkbox2.checked then k:=k+2;
if checkbox3.checked then k:=k+4;
......
if checkbox8.checked then k:=k+128;
.....
if k and 1 then checkbox1.checked=true
else checkbox1.checked=false;
...
if k and 128 then checkbox8.checked=true
else checkbox8.checked=false;
 
kaida:
首先谢您,另外能不能简单些?
 
好像只能这样吧
 
说明:checkbox8checkbox7checkbox6checkbox5checkbox4checkbox3checkbox2checkbox1
假设checkbox8选中,其它未选中:checkbox8=1,其余为:0,则结果为:10000000,以8位表示,怎样写?
 
声明一个boolean的数组
var checkAraay : array[1..8] of boolean;
checkArray[1] := checkBox1.checked;
checkArray[2] := checkBox2.checked;
. .
. .
. .
checkArray[8] := checkBox8.checked;
其他操作只需要取数组就ok了~
 
var
k:integer;
begin
k:=0;
if checkbox1.checked then k:=k+1;
if checkbox2.checked then k:=k+2;
if checkbox3.checked then k:=k+4;
if checkbox4.checked then k:=k+8;
if checkbox5.checked then k:=k+16;
if checkbox6.checked then k:=k+32;
if checkbox7.checked then k:=k+64;
if checkbox8.checked then k:=k+128;
sbuf[1]:=byte($ff); {帧头}
sbuf[2]:=byte($ff); {帧头}
sbuf[3]:=byte($ff); {帧头}
sbuf[4]:=byte($ff); {帧头}
sbuf[5]:=byte($00);
sbuf[6]:=byte($00);
sbuf[7]:=byte($09);
sbuf[8]:=byte($01);
sbuf[9]:=byte($02);
sbuf[10]:=byte(k);//改变此值
sbuf[11]:=byte($00);
sbuf[12]:=byte($21);
sbuf[13]:=((sbuf[5]) xor (sbuf[6]) xor(sbuf[7]) xor (sbuf[8]) xor(sbuf[9]) xor (sbuf[10]) xor (sbuf[11]) xor (sbuf[12]));
sbuf[14]:=byte($fe);{帧尾}
sbuf[15]:=byte($ee); {帧尾}
sbuf[16]:=byte($ee); {帧尾}
senddata;{调用发送函数}
edit1.Text:=inttostr(k);

end;
 
对kaida的帮助,表示谢,我已解决计算机专用报警转发器的触点控制命令的打开和关闭了.
 
后退
顶部