delphi调用dll问题(在线等待!) ( 积分: 200 )

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

zcsia

Unregistered / Unconfirmed
GUEST, unregistred user!
TLhHisRcptItem = record
getsure_unit_no :PChar ;//经办机构编号
r_date :PChar ;//发生日期
rcpt_no :PChar ;//收据号
insure_no :PChar ;//医保号
rcpt_sno :PChar ;//项目序号
doctor_id :PChar ;//医生编码
dept_id :PChar ;//科室编码
opt_no :PChar ;//操作员编码
hosp_no :PChar ;//医院编号
item_class :PChar ;//项目归类码
inter_id :PChar ;//内码
price :PChar ;//单价
amount :PChar ;//数量
days :PChar ;//天数
units :PChar ;//药品单位
end;
ArrayOfLhHisRcptItem = array of TLhHisRcptItem;
sRcptItems: ArrayOfLhHisRcptItem;
定义如上.

调用如下:
i := 0;
SetLength(sRcptItems,2);
while not eof do
begin
//分配空间
sRcptItems.getsure_unit_no := AllocMem(50);
sRcptItems.r_date := AllocMem(50);
sRcptItems.rcpt_no := AllocMem(50);
sRcptItems.insure_no := AllocMem(50);
sRcptItems.rcpt_sno := AllocMem(50);
sRcptItems.doctor_id := AllocMem(50);
sRcptItems.dept_id := AllocMem(50);
sRcptItems.opt_no := AllocMem(50);
sRcptItems.hosp_no := AllocMem(50);
sRcptItems.item_class := AllocMem(50);
sRcptItems.inter_id := AllocMem(50);
sRcptItems.price := AllocMem(50);
sRcptItems.amount := AllocMem(50);
sRcptItems.days := AllocMem(50);
sRcptItems.units := AllocMem(50);
//赋值
sRcptItems[iTmp].getsure_unit_no := jbjgbh;//;经办机构编号
sRcptItems[iTmp].r_date := fssj ; //发生日期
sRcptItems[iTmp].rcpt_no := sjh; //收据
sRcptItems[iTmp].insure_no := ybh; //医保号
sRcptItems[iTmp].rcpt_sno := xmxh; //项目序号
sRcptItems[iTmp].doctor_id := ysbm; //医生编码

...........
然后显示sRcptItems[iTmp]的值(这时候显示的东西是正常的)

next;
end;

循环完后再显示sRcptItems[iTmp]的值(这时候内容就不对了,有些元素值就错位或有乱字符)

请教各位大侠会是什么原因
 
没有看到 iTmp 的定义和初值。
getsure_unit_no 等全部 AllocMem(50);
为什么不直接定义
...
getsure_unit_no: array [0..49] of char;
...
 
后退
顶部