在DLL函数
cmpp_recv(conn_desc *conn,cmppe_packet *cp,dpl_uint8_t is_break, dpl_uint32_t *seq)中 cmppe_packet 的定义为struct cmppe_packet{
cmppe_head pk_head;
dpl_int32_t result;
-> union{
-> cmppe_deliver pk_deliver;
-> cmppe_login_resp pk_login_resp;
-> cmppe_submit_resp pk_submit_resp;
-> }pk_data;
};
其中cmppe_deliver、cmppe_login_resp、cmppe_submit_resp都是struct结构。这样在DELPHI 中应该怎么申明??

解决方案 »

  1.   

    你参照这个可变记录改写一下试试:
    TVariantRecord= record
      Name:Pchar;
     case integer of
       0:(D:Double);
       1:(I:integer);
       2:(C:Char);
     end;
      

  2.   

    请问下面这个integer 占用 内存不?
     
    case integer of
       0:(D:Double);
       1:(I:integer);
       2:(C:Char);
    谢谢
      

  3.   

    不占用的,如果是case a: integer of是占用的
      

  4.   

    cmpp_recv(conn_desc *conn,cmppe_packet *cp,dpl_uint8_t is_break, dpl_uint32_t *seq)
    那在DELPHI中是不是应该声明为
    cmpp_recv(conn:Tconn_desc ,cp:Tcmppe_packet,is_break : byte;seq:^byte)呢?
    我试了试,一直不成功啊!
    我将cmppe_packet 设置成了 record Tcmppe_packet,
    conn_desc 设成 record Tconn_desc ,dpl_uint32_t  其实是我typedef int;我对C不熟悉,中间*意思是不是应该是指针呢?
    谢谢各位,分不够可以再加