都是类似这种不兼容类型的问题
[DCC Error] Reader.pas(99): E2010 Incompatible types: 'NativeUInt' and 'Cardinal'
请问如何处理? 请各位大侠指导!另外,是否有pcsc读卡的高版本的示例代码, 谢谢!

解决方案 »

  1.   

    如果你把程序编译为Win64,NativeUInt=UInt64,
    如果你把程序编译为Win32,NativeUInt=UInt32对于Cardinal来说,不管是编译为Win64程序还是Win32程序,Cardinal=Uint32因此这两种数据类型是不兼容的。
      

  2.   

    可以把Cardinal改为UNativeInt试试看
      

  3.   

    Cardinal改为THandle没有太多外置控件的话,建议使用10.2.3tokyo版,兼容性比旧版要好点
      

  4.   

      原来delphi2007只能编译出32位的,所以用delphi xe2用来编译64位的 。 麻烦问一下,这个问题如何解决。
    出问题的是这部分代码:property CardHandle:THandle read FCardHandle; 
    调用的外部dll。
      

  5.   

    根本问题不在于数据类型的问题,这个很容易改过来。如果你编译为64位代码,那它依赖的读卡设备的DLL也要有64位版本的。
      

  6.   

    THandle实际上就是NavtiveUInt。下面两种方法你看看那种适合你:解决方法1:
         把property CardHandle:THandle read FCardHandle;
     改为property CardHandle:Cardinal read FCardHandle; 解决方法2:
      把 FCardHandle的类型改为THandle
      

  7.   

       照着方法1修改后,能编译通过,但是无法读卡了。 能否给一个信箱,我把代码发给你,烦劳协助处理一下,很着急。 我的信箱:huangwqiang#163.com
      

  8.   

    估计问题就是你没有使用64位的Dll。
    抱歉,我很忙,没有时间帮你完全处理。
      

  9.   

    不知道楼主是否已经解决了这个问题,我今天使用pcsc读卡器也遇到同样的问题,delphi7能正常运行读卡,delphi10就出现编译就报错,我按照法1修改后,能编译通过,也是无法读卡,后面发现有个两个变量的声明问题导致的,把那两个变量的声明从PChar改成PAnsiChar即可