如何传递实参数给Dll中记录类型的参数和PChar的怪问题??? ( 积分: 50 )

  • 主题发起人 主题发起人 Jaby
  • 开始时间 开始时间
J

Jaby

Unregistered / Unconfirmed
GUEST, unregistred user!
问题一、DLL文件中定义了如下函数:
type
TInforRecord=Record
Name:string;
age : string;
Sex : string;
end;
function WriteInfor(Infor:TInforRecord):boolean;stdcall;

请问我在程序中调用该函数时应该如何传递实际参数给Infor实参?
我在调用的时候从新定义了一个
TInforRecords=Record
Name:string;
age : string;
Sex : string;
end;
但把这个参数传递到DLL中时出错!

问题二、当Dll函数的返回值为Pchar类型的时候,为何只有前面16个字符返回,而后面的却不见了!

望高人指点
 
问题一、DLL文件中定义了如下函数:
type
TInforRecord=Record
Name:string;
age : string;
Sex : string;
end;
function WriteInfor(Infor:TInforRecord):boolean;stdcall;

请问我在程序中调用该函数时应该如何传递实际参数给Infor实参?
我在调用的时候从新定义了一个
TInforRecords=Record
Name:string;
age : string;
Sex : string;
end;
但把这个参数传递到DLL中时出错!

问题二、当Dll函数的返回值为Pchar类型的时候,为何只有前面16个字符返回,而后面的却不见了!

望高人指点
 
1.传递string参数或包含string的结构参数,要ShareMem,使DLL与主程序用同一个内存管理器。或者改用PChar类型。
2.返回值为PChar,需要返回前先分配内存的。不建议直接返回PChar,通过变参传递要好些,分配内存、释放内存的处理好做一些。
 
都在QQ群里和你说了用别的过程 中转一下[:)]
 
多谢上面两位参与
不过,问题还是没有解决,
to lichengbin:在Dll中传递string类型要注意的问题我知道。现在的问题是怎样在调用Dll函数的时候传递参数给记录类型的形参!

To dingbaosheng
谢谢,参与,你所讲的方法,是最笨的方法。如果实在不行。我唯有用多几个Var参数来传递了。但我想搞明白DLL中记录的传递方法!

 
多人接受答案了。
 
后退
顶部