怎么解决这个问题Access Violation at address ×××× in module ****.DLL',Read of address ××××
定义 function IccWrite(pszPortName: pchar; pszPassword: pchar; nPswLen: Integer;pszDataIn:pchar; nLen: Integer;pszCardnoOut: pchar): Boolean;stdcall; external 'SMCICC.dll';
调用IccWrite(pszPortName, pszPassword, nPswLen, pszDataIn, nLen,pszCardnoOut);
值的一体的是每次调用都会出这样的错误

解决方案 »

  1.   

    检查你传递的PChar是否都分配了资源~~
      

  2.   

    同意zswangII(伴水清清)(一贴不灌,何以灌天下?) 的意见,一般出现av错误大多是资源没有分配,比如访问一个已经声明的类但没创建类的实例等等。
    这样为pchar分配缓冲区,用stralloc或strnew都可以:
    var
      apchar:pchar;
    apchar:=strnew('a new pchar');//apchar:=stralloc(10);
    ....
    strdispose(apchar);//释放
      

  3.   

    我的更郁闷呢, 我从一个toolbutton 执行一个过程, 过程中把这个 toolbutton 给删了, 生成了新的toolbutton, 同时把过程又给它的 onclick , 执行一二次没问题, 可是三次以上就出类似问题了!