急需:一个简单的小问题一维数组变量的赋值与取值(50分)

  • 主题发起人 主题发起人 laijf
  • 开始时间 开始时间
我????
这本身就是一个数据说明,说明的是另一个array[0..239] of byte(短信息内容)的长度
我是不可能改的,这样给你说嘛~!这是手机网关已经规定死了的
 
看了半天还是不知道你究竟要干什么?
你是想找出 s 中特定的字符?
 
还是把需求分析透:
双方如何定义的,一般通讯程序都要定义报文头,数据域多长,是否有后续报,分隔符....
 
不知道我问的什么就看这句
var
s:array[0..3]of byte;
v:integer;
begin
我又如果把S取出赋给V;//不知道S是怎么赋值的情况下
END;
 
function BTDW(b: array of BYTE):DWORD;
var dw,tdw: DWORD;
begin
// b[0]*(2^24)+b[1]*(2^16)+b[2]*(2^8)+b[3]

dw:=0;
tdw:=0;
tdw:=b[0]; dw:= dw+(tdw shl 24);
tdw:=b[1]; dw:=dw+(tdw shl 16);
tdw:=b[2]; dw:=dw+(tdw shl 8);
dw:=dw+b[3];
result := dw;
end;

procedure DWTB(dw: DWORD;var b: array of BYTE);
var tdw: DWORD;
begin

tdw:=$000000ff;
b[0]:=(dw and (tdw shl 24))shr 24;
b[1]:=(dw and (tdw shl 16))shr 16;
b[2]:=(dw and (tdw shl 8))shr 8;
b[3]:=(dw and tdw);
end;


procedure TForm1.Button1Click(Sender: TObject);
var b: array[0..3]of byte;
v,i: integer;
begin
v:=100;
DWTB(v,b);
for i:= 0 to 3 do caption:=caption+format('/%x',[b]); //注意我是以16进制显示的
end;

procedure TForm1.Button2Click(Sender: TObject);
var b: array[0..3]of byte;
v,i: integer;
begin
b[0]:=0;
b[1]:=0;
b[2]:=0;
b[3]:=$64;
i:= BTDW(b);
caption:=inttostr(i);
end;
 
var
s: array [0..3] of byte
v: Integer;
begin
v := 50;
move(v, s[0], 4);
v := 100;
if not comparemem(@v, @(s[0]), 4) then
showmessage('s <> v');
end;
 
接受答案了.
 
后退
顶部