大家好: 请帮我看一看下面的代码好吗????????????代码如下:
//数据接受代码
procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
tmpArray:array[0..4096] of Byte;
i:dword;
tmpStr:string;
pStr:PChar;
aaa:string;
begin
if combobox7.ItemIndex = 1 then //如果选择按 十六进制 接受
begin
pStr:=Buffer;
tmpStr:=string(pStr);
Dec(PStr);
for i:=0 to Length(tmpStr)-1 do
begin
inc(PStr);
tmpArray[i]:=Byte(PSTR^);
aaa:=aaa+IntToHEX(Ord(tmpArray[i]),2)
end;
memo2.Lines.Add(aaa);
exit;
end;
if combobox7.ItemIndex = 0 then //如果选择按 字符 接受
begin
pStr:= Buffer;
memo2.Lines.Add(pStr);
end;
end;
对以上的代码运行后我的问题是装样子的:
别人一下子给我发10个卡号,我想让每一个卡号都用一行显示在memo2中,
结果只接受了一个或者是两个,如果接受两个的话它们在同一个行内而不是
两行。
请您们帮我看一下是不是我写错拉啊???/
//数据接受代码
procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
tmpArray:array[0..4096] of Byte;
i:dword;
tmpStr:string;
pStr:PChar;
aaa:string;
begin
if combobox7.ItemIndex = 1 then //如果选择按 十六进制 接受
begin
pStr:=Buffer;
tmpStr:=string(pStr);
Dec(PStr);
for i:=0 to Length(tmpStr)-1 do
begin
inc(PStr);
tmpArray[i]:=Byte(PSTR^);
aaa:=aaa+IntToHEX(Ord(tmpArray[i]),2)
end;
memo2.Lines.Add(aaa);
exit;
end;
if combobox7.ItemIndex = 0 then //如果选择按 字符 接受
begin
pStr:= Buffer;
memo2.Lines.Add(pStr);
end;
end;
对以上的代码运行后我的问题是装样子的:
别人一下子给我发10个卡号,我想让每一个卡号都用一行显示在memo2中,
结果只接受了一个或者是两个,如果接受两个的话它们在同一个行内而不是
两行。
请您们帮我看一下是不是我写错拉啊???/
改为 for i:=0 to BufferLength-1 dotry!!
1、出现提到得问题实在那种显示方式下发生的?十六进制?字符形式?或是两者皆可能!
2、计算机有没有可能会收到 #0 这个字符?(不能显示完全可能与此有关)
3、连续发送10的卡号,卡号之间的时间间隔是多少?与spcom的间隔时间属性是否相符?(不能分行显示可能与此有关)