后台用C++的数据结构,
比如:
struct data
{
   int num
    .....
   struct datasub
   {
       char name;
       ..........
    }
}
现在想在前台的delphi中调用这样的数据结构,该如何调用?
可以包含在dll里面吗?
我的e'mail:[email protected]
谢了先!

解决方案 »

  1.   

    你是指在delphi调用c++的dll函数时用这个结构作为参数吗?
    那么一般你需要在delphi也声明同样的结构:
    type
      datasub=record
        name:char;
      end;
      data=record
        num:int;
        ds:datasub;
      end;或者用一块和c++中该结构大小相同的内存句柄作为参数。
      

  2.   

    我想用一块和c++中该结构大小相同的内存句柄作为参数,
    在delphi中该如何引入?
    是在interface里头加入吗,如何加入?(初次用delphi,请别见笑)
      

  3.   

    基本上像这样:unit Unit1;interfaceuses
    .........type
      datasub=record
        name:char;
      end;
      data=record
        num:int;
        ds:datasub;
      end;
      TForm1 = class(TForm)
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}.......
    ......end.
      

  4.   

    谢谢楼上这位兄弟。
    是不是我在delphi上重写这样的数据结构,(包括结构体内的变量都一样)
    而我后台的c++数据结构就会认了?(上面所说的都是全局变量)
    因为我想通过dll传递这样的一块内存,
    能做到比如说:
    在c++里定义:struct data *mydata;
    后台程序这样调用:
                void myfun1()
                {
                  mydata->datasub.name,
                  .........
                }而我在delphi里是否可以这样调用?
                mydata: data;
                procedure myfun2()
                begin
                mydata.datasub.name
                ..........
                end;谢谢了!
      

  5.   

    我认为,你前台用Delphi 而后台用C++会比现在的结构好的多;
      

  6.   

    我现在就是这样啊。前台delphi,后台c++。
    现在关键是我要想让前后台共享全局变量,而这个全局变量形式是(后台)
    struct{
            .........
            struct
                 {
                  ........
                  }
            }
    不知道是不是要在delphi里重写过这样得全局变量?
    并且可以通过dll中得函数传递?
    谢谢!
      

  7.   

    首先你必须搞清楚的概念是,你用结构体(struct,或delphi中的record)作为函数参数传递时,程序本身是不管你传的结构是如何的,你传的只是指向这个结构体的指针,所以,即使你vc和delphi中的两个函数传的类型不一样(或大小不一样),程序的编译还是没有问题的,但是这样其中数据的访问可能就会出错。你所要做的就是在vc和delphi中声明大小相同,并且每一个数据位存放相同含义数据的结构体,以上方法应该是可以的把,你最好实际做的时候观察一下内存中的内容是否正确。