风
风零落
Unregistered / Unconfirmed
GUEST, unregistred user!
构造一个函数,其返回值有多个内容的。应该怎么构造??
比如说我要构造一个得到门禁机信息的函数。其返回值应该包括这个门禁机的号码(Address),板号(boardID),出入记录多少(nCord),人员信息多少(nPerson)及系统时间(SysTime)。。
我用了一个发送过程Transmit和一个接收过程ReadData,发送的是字符串,接收的也是一个整的字符串。。我构造的函数如下:
Function GetDoorInf(Address:integer):shortstring;//提取门禁机的信息
var
i:integer;
a,b,c,d:shortstring;
begin
i:=4;
while i>0 do
begin
bagsize:=chr($03);
s0:=start;//同步字符
s1:=start;
s2:=chr($81);//命令字符
s3:=chr(Address);
s4:=bagsize;
send:=s0+s1+s2+s3+s4;//发送字符串
Transmit;//发送命令
ReadData;//接收命令
Result:=Receive;//接收字符串Receive
Raddress:=r3;
r0:=copy(Receive,1,1);
r1:=copy(Receive,2,1);
r2:=copy(Receive,3,1);
r3:=copy(Receive,4,1);
bagnumber:=copy(Receive,5,2);
r4:=copy(Receive,7,9);
if r2=chr($91) then
//数据处理与分离
BoardID:=StrToInt(copy(r4,1,1));
a:=copy(r4,2,1);
nperson:=ord(a[1]);
b:=copy(r4,3,2);
nOpenCount:=ord(b[1])*ord(b[2]);
c:=copy(r4,5,2);
MDelay:=inttostr(ord(c[1]))+inttostr(ord(c[2]));
d:=copy(r4,7,3);
SupOrder:=inttostr(ord(d[1]))+inttostr(ord(d[2]))+inttostr(ord(d[3]));
if r2=chr($C1) then
i:=i-1;
end
end;
请问为什么我调用的时候就错了,这样构造对不?要不要把发送和接收分开,不在同一个函数里啊?接收另外判断吗??
比如说我要构造一个得到门禁机信息的函数。其返回值应该包括这个门禁机的号码(Address),板号(boardID),出入记录多少(nCord),人员信息多少(nPerson)及系统时间(SysTime)。。
我用了一个发送过程Transmit和一个接收过程ReadData,发送的是字符串,接收的也是一个整的字符串。。我构造的函数如下:
Function GetDoorInf(Address:integer):shortstring;//提取门禁机的信息
var
i:integer;
a,b,c,d:shortstring;
begin
i:=4;
while i>0 do
begin
bagsize:=chr($03);
s0:=start;//同步字符
s1:=start;
s2:=chr($81);//命令字符
s3:=chr(Address);
s4:=bagsize;
send:=s0+s1+s2+s3+s4;//发送字符串
Transmit;//发送命令
ReadData;//接收命令
Result:=Receive;//接收字符串Receive
Raddress:=r3;
r0:=copy(Receive,1,1);
r1:=copy(Receive,2,1);
r2:=copy(Receive,3,1);
r3:=copy(Receive,4,1);
bagnumber:=copy(Receive,5,2);
r4:=copy(Receive,7,9);
if r2=chr($91) then
//数据处理与分离
BoardID:=StrToInt(copy(r4,1,1));
a:=copy(r4,2,1);
nperson:=ord(a[1]);
b:=copy(r4,3,2);
nOpenCount:=ord(b[1])*ord(b[2]);
c:=copy(r4,5,2);
MDelay:=inttostr(ord(c[1]))+inttostr(ord(c[2]));
d:=copy(r4,7,3);
SupOrder:=inttostr(ord(d[1]))+inttostr(ord(d[2]))+inttostr(ord(d[3]));
if r2=chr($C1) then
i:=i-1;
end
end;
请问为什么我调用的时候就错了,这样构造对不?要不要把发送和接收分开,不在同一个函数里啊?接收另外判断吗??