数组的简单问题!急呀!(100分)

  • 主题发起人 主题发起人 huying
  • 开始时间 开始时间
H

huying

Unregistered / Unconfirmed
GUEST, unregistred user!
场 股道 摘挂 记事 残
Ⅱ 20 +45 4506863# 45
Ⅱ 14 -2 43
Ⅱ 13 1 42
Ⅱ 13 1 34*# 10
Ⅱ 14 1 3131044 07

现在我想把一个Stringgrid里的数据通过串口发.转换后把里面的数据放到byte数组里.按照一行一行的转换发送,2,5列的值是固定的(值在0-255.)每个单元格一个字节够了.但是其他列的数据是不固定的,可以是2-8位的数字还加#号什么的(所以这里就要拆分成符号单独用一个字节表示,前面的数字用BCD码表示).我想怎么样把不固定的数据动态填到数组里.主要是第5列字节不固定.应该怎么样用循环联系而又能填到正确的数组的位置呢?原来做的长度固定就知道转换后放到数组的什么位置.现在不固定了,应该怎么确定位置呢?
行数是可以动态得到.
不知道各位是否明白我的意思..
 
可以一个字节一个字节发嘛
如果非要用byte数组那么你可以用动态的数组,每节之间用一个实际数据中不会出现的字符做分割符,比如说 /(自己看着选) 什么,如果不用分割符那么你可以在开头多发5个字节的数据,分别表示场、股道。。。的数据的长度
 
我和他商量的是,发每行的第一个字节是告诉他这一行的总字节数,其他4列的数是固定的,就能确定第5列的字节数.他就可以拆分! 可是现在是我要怎么才能准确的发出去.怎么样填到我的数组里呢?数组的下标是不固定的呢!
 
用记录型数组。
 
怎么用呀?能给写下吗?谢谢了
 
那你依次告诉他1~5到的字节数不就可以了啊
 
因为他要无线发送,字节要越少越好!要作到最精简.
我的问题是我要怎么动态个数的字节正确的填到我的BYTE数组里!
原来如果长度能固定,可以这样写.数组的下标可以确定.要是不固定的话.可能占1个字节有可能占5个字节.下标就不好确定了.应该怎么写呢?
for i:=0 to aarow-1 do
begin
a[i*8+27]:=chang_bie_send(trim(stringgrid1.cells[1,i+1])); //--场别--
a[i*8+28]:=strtoint(trim(stringgrid1.cells[2,i+1])) mod 256; //--股道--
a[i*8+29]:=zhai_gua_send(trim(stringgrid1.cells[3,i+1])); //--摘挂--
jishi:=trim(stringgrid1.cells[4,i+1]);
if jishi='' then
begin
a[i*8+30]:=$bb;
a[i*8+31]:=$bb;
a[i*8+32]:=$bb;
a[i*8+33]:=$bb;
end
else
begin
a[i*8+30]:=strtoint(copy(jishi,1,2)) mod 256;
a[i*8+31]:=strtoint(copy(jishi,3,2)) mod 256;
a[i*8+32]:=strtoint(copy(jishi,5,2)) mod 256;
a[i*8+33]:=strtoint(copy(jishi,7,2)) mod 256;
end;
a[i*8+34]:=strtoint(trim(stringgrid1.cells[5,i+1])) mod 256;
end;
 
你可以动态的嘛,用个变量,写一个字节然后inc下啦!
 
多人接受答案了。
 
后退
顶部