procedure TForm1.Button3Click(Sender: TObject);
var
pWarnmsg, pErrmsg: array [0..1023] of char;
pDeptKey: array [0..511] of char;
pIssuedeptid: array [0..23] of char;
pIssuedate, pBirthDate: array [0..7] of char;
pIdtype, pCardType: array [0..1] of char;
pCardNo, pID, pTelephone: array [0..19] of char;
pName: array [0..11] of char;
pSex: array [0..0] of char;
pCompany: array [0..69] of char;
pAddress: array [0..79] of char;
Res: Integer;
begin
ZeroMemory(@pIssuedeptid, 24);
ZeroMemory(@pIssuedate, 8);
ZeroMemory(@pDeptKey, 512); //8
ZeroMemory(@pWarnmsg, 1024);
ZeroMemory(@pErrmsg, 1024);
ZeroMemory(@pCardType, 2);
ZeroMemory(@pIdtype, 2);
ZeroMemory(@pID, 20);
ZeroMemory(@pCardNo, 20);
ZeroMemory(@pName, 12);
ZeroMemory(@pSex, 1);
ZeroMemory(@pBirthDate, 8);
ZeroMemory(@pCompany, 70);
ZeroMemory(@pAddress, 80);
ZeroMemory(@pTelephone, 20); Res := ykt_readopencardinfo_local('3500', '0101', pDeptKey, pIssuedeptid, pIssuedate,
pCardType, pCardNo, pIdType, pID, pName, pSex, pBirthDate, pCompany, pAddress,
pTelephone, pWarnmsg, pErrmsg);
if Res = 0 then
begin
Memo1.Lines.Append('pIssuedeptid: ' + String(pIssuedeptid));
Memo1.Lines.Append('pIssuedate: '+pIssuedate);
Memo1.Lines.Append('pCardType: '+pCardType);
Memo1.Lines.Append('pCardNo:'+pCardNo);
Memo1.Lines.Append('pIdtype:'+pIdtype);
Memo1.Lines.Append('pID:'+pID);
Memo1.Lines.Append('pName:'+pName);
Memo1.Lines.Append('pSex:'+pSex);
Memo1.Lines.Append('pBirthDate:'+pBirthDate);
Memo1.Lines.Append('pCompany:'+pCompany);
Memo1.Lines.Append('pAddress:'+pAddress);
Memo1.Lines.Append('pTelephone:'+pTelephone);
end else
begin
Memo1.Lines.Append(pWarnmsg);
Memo1.Lines.Append(pErrmsg);
end;end;
按照文档,正确传入参数,最终也都有结果回来。但是该函数执行完后会报错(读地址错误),请问是啥原因
估计是数组大小的问题。但是按照文档的定义,怎么会错呢。