如何使界面程序调用DLL中的一个记录的内容? (155分)

  • 主题发起人 主题发起人 zla
  • 开始时间 开始时间
Z

zla

Unregistered / Unconfirmed
GUEST, unregistred user!
利用下面的方法行不通,我该如何改呢?
TMyRec=record
top:Integer;
end;
DLL中的内容:
function abc:Pointer;stdcall;
var
MyRec:TMyRec;
begin
MyRec.top:=20;
Result:=@MyRec;
end;
界面程序:
var
P:Pointer;
TT:TMyRec;
begin
p:=abc;
move(p^,tt,sizeof(TMyRec));
ShowMessage(IntTOStr(tt.top));
 
看看这个
function abc:TMyRec;stdcall;
var
MyRec:TMyRec;
begin
MyRec.top:=20;
Result:=MyRec;
end;
 
假如用记录集,是不是传的指针,还是把记录副制一次
 
应该是指针. 不过我建议还是复制一份纪录好, 可以避免子程序结束之后局部变量释放
造成其他错误.
 
如果从DLL中传递指针,会不会在DLL写在时丢掉呢?
所以我赞同楼上兄弟的方法,传普通数据结构好了
 
复制一份当然可以,但是效率会受到一定的影响。

另外我用方法传给记录的方法可以,但是这个记录的结构VB或其它开发工具如何读取
呢?
 
请参考一下
http://www.delphibbs.com/delphibbs/dispq.asp?lid=677711
的答案, 问题已经解决!
 
后退
顶部