比如用VC写了一个动态库,dephi 调用库里的一个函数, 并在调用函数的时候传入参数。 如果参数是 int 或 string , VC的动态库函数是可以认识的, 但如果传递的是一个 结构或动态的数组,链表 , 是否可以正确的传递和接收呢。
如果可以,DEPHI 里是用record 还是 TList , 还是^ 指针, 同时相对应的在VC里应该用什么去接收这个数据类型呢。
现在项目里需要用到传递一个动态的结构数组下去, 不知道能不能正确传递,以及具体怎么做,特向大家请教,谢谢。
如果可以,DEPHI 里是用record 还是 TList , 还是^ 指针, 同时相对应的在VC里应该用什么去接收这个数据类型呢。
现在项目里需要用到传递一个动态的结构数组下去, 不知道能不能正确传递,以及具体怎么做,特向大家请教,谢谢。
typeTData=Record //你的数据类型
a:integer;
end;PData=^TData;var
alist:TList;
p:PData;
begin
aList:=TList.create;
new(p);
p->a:=12;
aList.Add(p);
end;
和在pascal里加上packed标识效果一样~~string是pascal里特有的~~
不能作为共享数据类型~~//Delphi
type
TMyRecord = packed record
rInt: Integer;
rStr: array[0..19] of Char;
end;//C++
#pragma pack(1)
struct TMyRecord
{
int rInt;
char rStr[20];
}
type
PMyRecord = ^MyRecord;
MyRecord = record
ID : integer;
Name:string;
ParentID : integer;
PNext: PYourStr;
end;
相应的这个结构
type
PMyRecord = ^MyRecord;
MyRecord = packed record
ID : integer;
Name:array[1..20] of char;
PNext: PMyRecord;
end;相应的这个结构在C++里应该用什么结构来接收啊,是否可以用以下这个结构struct TmyRecord
{
int id;
name char[20];
TmyRecord * pNext;
}
PMyRecord = ^MyRecord;
MyRecord = packed record
ID : integer;
Name:array[0..19] of char; //<<下标从0开始
PNext: PMyRecord;
end;struct TmyRecord
{
int id;
name char[20];
TmyRecord * pNext;
}可以不可以你自己做做测试不就知道了~~