大家好:     请帮我看一看下面的代码好吗????????????代码如下:
//数据接受代码
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中,
    结果只接受了一个或者是两个,如果接受两个的话它们在同一个行内而不是
    两行。
请您们帮我看一下是不是我写错拉啊???/

解决方案 »

  1.   

    for i:=0 to Length(tmpStr)-1 do
    改为 for i:=0 to BufferLength-1 dotry!!
      

  2.   

    要确定以下几个问题
    1、出现提到得问题实在那种显示方式下发生的?十六进制?字符形式?或是两者皆可能!
    2、计算机有没有可能会收到 #0 这个字符?(不能显示完全可能与此有关)
    3、连续发送10的卡号,卡号之间的时间间隔是多少?与spcom的间隔时间属性是否相符?(不能分行显示可能与此有关)