都是類似這種不兼容型別的問題
[DCC Error] Reader.pas(99): E2010 Incompatible types: 'NativeUInt' and 'Cardinal'
請問如何處理? 請各位大俠指導!
另外,是否有pcsc讀卡的高版本的示例代碼, 謝謝!
uj5u.com熱心網友回復:
如果你把程式編譯為Win64,NativeUInt=UInt64,如果你把程式編譯為Win32,NativeUInt=UInt32
對于Cardinal來說,不管是編譯為Win64程式還是Win32程式,Cardinal=Uint32
因此這兩種資料型別是不兼容的。
uj5u.com熱心網友回復:
可以把Cardinal改為UNativeInt試試看uj5u.com熱心網友回復:
Cardinal改為THandle沒有太多外置控制元件的話,建議使用10.2.3tokyo版,兼容性比舊版要好點
uj5u.com熱心網友回復:
原來delphi2007只能編譯出32位的,所以用delphi xe2用來編譯64位的 。 麻煩問一下,這個問題如何解決。出問題的是這部分代碼:property CardHandle:THandle read FCardHandle;
呼叫的外部dll。
uj5u.com熱心網友回復:
根本問題不在于資料型別的問題,這個很容易改過來。如果你編譯為64位代碼,那它依賴的讀卡設備的DLL也要有64位版本的。uj5u.com熱心網友回復:
THandle實際上就是NavtiveUInt。下面兩種方法你看看那種適合你:解決方法1:
把property CardHandle:THandle read FCardHandle;
改為property CardHandle:Cardinal read FCardHandle;
解決方法2:
把 FCardHandle的型別改為THandle
uj5u.com熱心網友回復:
照著方法1修改后,能編譯通過,但是無法讀卡了。 能否給一個信箱,我把代碼發給你,煩勞協助處理一下,很著急。 我的信箱:huangwqiang#163.comuj5u.com熱心網友回復:
估計問題就是你沒有使用64位的Dll。抱歉,我很忙,沒有時間幫你完全處理。
uj5u.com熱心網友回復:
不知道樓主是否已經解決了這個問題,我今天使用pcsc讀卡器也遇到同樣的問題,delphi7能正常運行讀卡,delphi10就出現編譯就報錯,我按照法1修改后,能編譯通過,也是無法讀卡,后面發現有個兩個變數的宣告問題導致的,把那兩個變數的宣告從PChar改成PAnsiChar即可
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/29422.html
標籤:VCL組件開發及應用
