Delphi调用VC的类并引用(参数,执行类方法等)

来源:互联网 发布:非结构化数据 编辑:程序博客网 时间:2024/06/06 03:12

      一直以为Delphi与VC之间不能进行传递对象类型参数, 所以一直以结构或更普通的数据类型交换数据 , 但前段时间得一大神传授, 终于知道如何实现类对象的传递.

     需要注意的是C++里面的struct才能与delphi里面的class一一对应, 而且,struct里面的元素地址不能随意改变(比如setlength),不然就AV了.

     具体代码在: http://git.oschina.net/tigera15/delphi-vc-callwithclass/blob/master/delphi-vc-passClass.7z

   Delphi的类原型:

type

  size_t = NativeUInt;  MyClass = Class    p1: integer;    p2: pansichar;    p3: size_t;    p4: boolean;    p5: pinteger;    p6: size_t;    function callMethod(pv1: array of integer; pv2: size_t): integer;vitual;       stdcall;  End;




     C++的类原型:

struct MyClass{int p1;char* p2;size_t p3;bool p4;int* p5;size_t p6;virtual int __stdcall callMethod(int* pv1, size_t pv2){MessageBoxA(0, "run VC callMethod", "callMethod", 0);int lvRet = p1;for (size_t i = 0; i < p6; i++) {lvRet += p5[i];}for (size_t i = 0; i < pv2; i++) {lvRet += pv1[i];}sprintf_s(p2, p3, "return value:%d", lvRet);return lvRet;}};