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;
按照文档,正确传入参数,最终也都有结果回来。但是该函数执行完后会报错(读地址错误),请问是啥原因