构造一个函数,其返回值有多个内容的。应该怎么构造??
比如说我要构造一个得到门禁机信息的函数。其返回值应该包括这个门禁机的号码(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;
请问为什么我调用的时候就错了,这样构造对不?要不要把发送和接收分开,不在同一个函数里啊?接收另外判断吗??~~~~~~~~~~~~~~~~~~~~~~~~
世界因为你我而年轻!
☆★○●◎◇◆□■△▲※
解决方案 »
- idTCPSever和idTcpCLIENT的几点疑问
- 调用C#写的webservices时 如果网络延时或者请求返回时间长的话 应用程序就卡 这是什么原因啊
- 如何在delphi中关闭特定端口?
- 请问,如何调用vc写的dll
- 请教一个用dataSetProvider更新数据的问题,请高手不吝赐教
- 请问一个关于界面第三方控件在哪里下载,怎么用
- 100分求救!!!高手请进!!!
- 寻找一款能更改文件版本号的工具,急!!急!!!!
- 现有一 Rect 区域为32x32的,有一 Bitmap 为64x64的,要将此bitmap画在此Rect 中,用TCanvas.Draw(Rect.Left,Rect.Top,BitMap) 的话会将
- 这句SQL 怎么写? (SQL SERVER)
- 字符串排版,遇到‘?’换行
- 在线等!如何将一幅图像保存到内存里??
result:=stringlist
我现在想的是把他分开。。发送的单单做成一个函数,其返回值只有false和true回来的字符串然后整体判断,再分出数据,,这样能行不如果你们有例子,请给我看一个,谢谢了