type 
 ppara = ^tpara;
  tpara=packed record
    Command:array[0..3] of char;
    Length:integer;
    Reserverd:array[0..1] of byte;
    Status:array[0..1] of byte;
    Paralist:array[0..0] of byte;
  end;var
b:array of byte;
i:integer;
begin
setlength(b,100);
for i=0 to 99 then
b[i]:= $01;
end;
我现在要把b数组的数据传到paralist,应该怎么做;

解决方案 »

  1.   

    Move(b[0], paralist[0],length(b))
      

  2.   

    这个我试过了,没用啊,我的paralist的定义
    Paralist:array[0..0] of byte;
      

  3.   

    SetLength(Paralist,Length(B));
    Move(b[0], paralist[0],length(b))
      

  4.   

    Paralist:array[0..0] of byte;SetLength(Paralist,Length(B));
    执行这句就出错拉paralist:array of byte;
    才是
    setlength(Paralist,Length(B));
    主要是paralist:array[0..0] of byte;
      

  5.   

    声明成动态数组才可以使用setlength
    声明成0怎么能放数据
      

  6.   

    Paralist:array[0..0] of byte; 这里定义的是什么意思,要么你直接定义成动态数组
    Paralist:array of byte;
      

  7.   

    array[0..0] of byte; 
    //实际上只是一个指针而已,如非特殊类型的数据,可直接用pbytearray,当然长度得保证不超过tbytearray的长度
    如果是可变动的长度,那么可以这样做  TByteArr = array[0..0] of Byte;
      PBytearr = ^TByteArr;
      tpara = packed record
        Command : array[0..3] of char;
        Length : integer;
        Reserverd : array[0..1] of byte;
        Status : array[0..1] of byte;
        Paralist : PBytearr;
     end;procedure TForm1.btn1Click(Sender: TObject);
      var  b : array of byte;
           i : integer;
    begin
      setlength(b,5);
      for i := 0 to 4 do  b[i]:= i * $01;
      GetMem(gtpara.Paralist,5 * SizeOf(gtpara.Paralist^));
      CopyMemory(gtpara.Paralist,@b[0],5 * SizeOf(gtpara.Paralist^));
      for i := 0 to 4 do ShowMessage(IntToStr(TByteArr(gtpara.Paralist^)[i]));
      //访问的时候,你可以通过指针移动的方式来访问,而不能直接以下标的形式访问
      //如:TByteArr(gtpara.Paralist^)[2] ;//错误
      //通过指针移动的方式
      inc(LongWord(gtpara.Paralist),2 * SizeOf(gtpara.Paralist^));
      ShowMessage(IntToStr(Byte(gtpara.Paralist^)));
      .....
      ...
      ...
      Freemem(gtpara.Paralist,5 * SizeOf(gtpara.Paralist^));
      b := nil;希望没有误导人....
      

  8.   

    我只是解释一下 [0..0]的用法,当然你也可以改用其它的方式,比如动态数组,pbyte ,等等
      

  9.   

    对,我就是要指针的做法,我试下,马上结贴给分,楼上的留个QQ号啊,我QQ38829979