我定义了一个byte型的数组,准备用该数组进行串口命令的发送。现在我想把一个结构体或者一个数(整型或实型)存到byte数组中,请问该如果做,谢谢?
如: 
var
  com:byte of arrary;
  tistr:integer;
begin
  //怎样把tistr的值付给com,如果com是一个该函数的形参呢?
end;

解决方案 »

  1.   

    用move函数
    move(com^, inttostr(tistr)[1], sizeof(integer));
      

  2.   

    动态数组先用 SetLength 分配内存然后直接赋值com数组作形参直接用数组名 com 传递,数组名是一个地址常量
      

  3.   

    像这样:var
      com: array of byte;
      i: integer;
    begin
      SetLength(com, 10);
      for i := 0 to 10 do
        com[i] := i;
    end;
      

  4.   

    如果要接数组应该如何做呢?
    如:com先用move赋了值,然后后面还要接另外一个变量
      

  5.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
        com:array of byte;
        tistr,i:integer;
        tTemp:TMyStruct;
        p:pByte;
    begin
        setlength(com,30);
        CopyMemory(pByte(@com[0]),@tistr,sizeof(integer));
        CopyMemory(pByte(@com[20]),@tTemp,sizeof(TMyStruct));
    end;
      

  6.   

    var
      com: array of byte;
      i: integer;
    begin
      setlength(com, 30);
      for i := 0 to 30 do
        com[i] := i;
    end;这样可以把。。