delphi中如何将record 类型的数据转换为 array of byte?

解决方案 »

  1.   

    type
      Tr = packed record
        a,b: byte;
      end;var r : Tr; P: Pbyte;
    r.a := 100; r.b := 30;
    P := @r;//即 P^ = r.a
      

  2.   

    如果record里面的数据是连续存放的,换句话说,里面不含指针,对象引用,string等类型,那样可以整块内存复制到array of byte----------------------------------
    type
      TTestRecord=record
        a: Integer;
        b: Integer;//它里面成员必须是简单类型,或者record类型.
      end;procedure TForm1.FormCreate(Sender: TObject);
    var
      test: TTestRecord;
      barray: array of byte;
    begin
      test.a := 123;
      test.b := 456;  setlength(barray,sizeof(test));
      move(test,pbyte(barray)^,length(barray));
      

  3.   

    TTestRecord=packed record
        i: Integer;
        s: string[200];
      end;procedure TForm2.Button1Click(Sender: TObject);
    var
      src: TTestRecord;
      dest: Array of byte;
      len: integer;
      i: integer;
      tmp: TTestRecord;
    begin
      src.i := 100;
      src.s := 'dsgdfgfd';
      //移入
      len := sizeof(src);
      setlength(dest, len);
      move(src, dest[0], sizeof(src)); //移入目标;
      //取出
      move(dest[0], tmp, sizeof(tmp));
      showmessage(tmp.s);
    end;