procedure TForm1.Button2Click(Sender: TObject);
var
bf:array [0..3] of byte;
ii:integer;
begin
bf[0]:=$3c;
bf[1]:=$59;
bf[2]:=$3e;
comport1.Write(bf,4);
ii:=comport1.Write(bf,4);
self.Caption:=inttostr(ii);end;
///////////////上述代码正常,下面的动态数组不工作
procedure TForm1.Button3Click(Sender: TObject);
var
bf:array of byte;
ii:integer;
begin
setlength(bf,5);
bf[0]:=$3c;
bf[1]:=$59;
bf[2]:=$3e;ii:=comport1.Write(bf,4);
self.Caption:=inttostr(ii);end;

解决方案 »

  1.   

    设断点一步一步看,看过了bf[2]:=$3e;后数组是不是已经有3个值了
      

  2.   

    两位老兄说的都没解决!动态数组中的值是正确的。就是传给cport不行。
      

  3.   

    问题应该是在ii:=comport1.Write(bf,4);这里
      

  4.   

    var
      sendbuf:array of char;
      sendbuff:array [0..2] of char;
    begin
     setlength(sendbuf,3);
     FillChar(sendbuf,3,$31);
     fillchar(sendbuff[0],3,#33);
     try
     if not ComPort1.Connected then
       begin
          ComPort1.Open;
          ComPort1.Write(sendbuf[0],3);
          //ComPort1.Write(sendbuff[0],3);
        end
       else
        ComPort1.Write(sendbuff,3);
        showmessage('send data success!');
     except
     end;
    end;
    这是可以成功发送数据的。。
      

  5.   

    var
      sendbuf:array of char;
      sendbuff:array [0..2] of char;
    begin
     setlength(sendbuf,3);
     FillChar(sendbuf[0],3,$31);//-----注意,小BUG,更正下。嘻~~,*_* >_< :-)
     fillchar(sendbuff[0],3,#33);
     try
     if not ComPort1.Connected then
       begin
          ComPort1.Open;
          ComPort1.Write(sendbuf[0],3);
          //ComPort1.Write(sendbuff[0],3);
        end
       else
        ComPort1.Write(sendbuff,3);
        showmessage('send data success!');
     except
     end;
    end;
    这是可以成功发送数据的。。
      

  6.   

    ComPort1.Write(sendbuff[0],3) 应该是数组为0的地址sendbuff[0]