各位, dilphi 里的错误:
    Access Violation  address 10001D4F in Module 'CreDasComm30.dll'
    Write of address  00429000  是什么意思,
  怎么解决呢?多谢!

解决方案 »

  1.   

    一般是你调用Dll中的函数时,把参数的类型搞错了
    Delphi调用别的语言写的DLL时候经常会有这种问题,比如,要求用Pchar你用了String,就会出这种问题,有些时候干脆就没办法解决
      

  2.   

    DLL是不是你自己写的,还是用别人的。仔细看看数据类型
      

  3.   

    Dll 是别人写的,  原形是:
         int ShakeHand(HANDLE icdev, int Node_Addr,LPCSTR SysCard_No, 
    LPCSTR CommPass, short Device_Type,short Device_Ver)  我在deliphi 里是这样写出的,
    function    ShakeHand(icdev: THandle; Node_Addr: integer; SysCard_No,
                          CommPass: LPCSTR; Device_Type:short; Device_Ver: short): integer;
                stdcall; external RAPI_DLL_NAME;这样调用的  procedure TForm1.Exe_ShakeHandClick(Sender: TObject);
    var aa: integer;
        ss: THANDLE;
        SysCard_No1: array [0..10] of char;
        CommPass1: array [0..9] of char;
        Device_Type1: short;
        Device_Ver1: short;
        mm:string;
    begin
      ss := OpenComm(1);
      //showmessage(intToStr(ss));
      SysCard_No1:='1234567890';
      CommPass1   := '10924099';//  aa := ShakeHand(ss, 1, '1234567890', '10924099',Device_Type1,Device_Type1);
      aa := ShakeHand(ss, 1, SysCard_No1, CommPass1,Device_Type1,Device_Type1);  showmessage(IntToStr(aa));
      //aa=-8;
      CloseComm(ss);
    end;
    谢了