有类型 1
type
 Deliver = ^TDeliver;
  TDeliver = Record
   RecvType:byte;
   SrcNo: array [0..21] of byte;
   TpUid:byte;
   TpUdhi:byte;
   Encoded:byte;
   MsgLength:word;
   Msg: array [0..161] of byte;
  end;有类型 2
 buffer:array[0..4096] of char;请问如何将 2 强制转换 1 中 

解决方案 »

  1.   

    var
      D: TDeliver;
      buffer:array[0..4096] of char;
      Move(Buffer, D, SizeOf(D));
      

  2.   


    procedure TForm1.Button1Click(Sender: TObject);
    type
      PDeliver = ^TDeliver;
      TDeliver = record
        RecvType: Byte;
        SrcNo: array[0..21] of Byte;
        TpUid: Byte;
        TpUdhi: Byte;
        Encoded: Byte;
        MsgLength: word;
        Msg: array[0..161] of Byte;
      end;
    var
      D: TDeliver;
      Buffer: array[0..4096] of Char;
    begin
      FillChar(Buffer, SizeOf(Buffer), 1);
      FillChar(D, SizeOf(D), 0);
      Move(Buffer, D, SizeOf(D));
      ShowMessage(IntToStr(D.RecvType));
    end;
      

  3.   

    好象还是有问题  出现 READ ADDRESS 01010101 错误
      

  4.   

    copy_paste(木石三) 你还在吗?
      

  5.   

    我这里没问题啊,你将D关闭重启再试。
    还有,你确认Buffer: 是1024个Char吗?
    用Move的话必须需要确认Source, Dst的内存是有效的,也就是说Buffer需要 >= SizeOf(TDeliver)