DLL中传递结构指针的问题
赖皮鹏 2008-10-23 10:57:41 dll中函数:
procedure getCardInfo(var aList:pInfo;iPort:integer=0);stdcall;
var
p : pInfo;
begin
getMem(p,sizeof(TInfo));
p^.Succmk := 1;
p^.aMess := 'ee';
p^.aNum := '2003';
p^.CardNo := 'AF53D7E2';
p^.aName := 'Test';
p^.aMoneyje := 24;
p^.aLimitM := 30;
aList := p;
freemem(p);
end;
结构体声明:
pInfo = ^TInfo;
//反馈信息
TInfo = record
Succmk : Integer; //成功标志 0 成功 1 失败
aMess: pchar; //失败原因
aNum : pchar; //编号
CardNo : pchar; //卡号
aName : pchar; //姓名
aMoneyje : Double; //当前卡余额
aLimitM : Double; //交易上限额度
end;
主程序调用:
procedure getCardInfo(var stuList:pStuInfo;iPort:integer=0);external 'PaySelf.dll';
procedure TForm1.Button1Click(Sender: TObject);
var
tt : pInfo;
begin
try
getMem(tt,Sizeof(TInfo));
getCardInfo(@tt);
getCardInfo(tt);
//test(tt);
Memo1.Lines.Add(tt.aNum);
Memo1.Lines.Add(tt.CardNo);
FreeMem(tt);
except
on e:exception do
showmessage(e.Message);
end;
end;
想实现的功能是传入一个空结构体,由DLL处理后返回
现在的问题是在DLL中读取传入指针被改变后的值都是对的,但是在主程序中无法获得改变的值。
并且在未添加try语句时会报内存错误
哪位高手能为我答疑?