深圳明華4442芯片IC卡 同樣的程式 在PB9下運行正常 但是在PB10.5下一直提示:MessageBox( '系統提示 ', '密碼核對錯誤! ',stopsign!) 求教各位如何解決!
uj5u.com熱心網友回復:
API函式嗎?定義中有這個嗎?;Ansiuj5u.com熱心網友回復:
外部宣告函式,需要注意uj5u.com熱心網友回復:
有Function Int csc_4442(Long dev,Int Length,Ref String ata_buffer) Library "Mwic_32.dll " Alias FOR "csc_4442;Ansi "
但還是不行
uj5u.com熱心網友回復:
pb10.5里默認的字符都是unicode,所以你在呼叫函式的時候要呼叫對應的unicode的函式uj5u.com熱心網友回復:
多謝各位朋友的熱心,謝謝大家!這個問題去年就有人碰到過,我也按大家的提議做了很多嘗試,但是還是沒什么進展.
希望大家繼續關注這個問題,我們一起來搞定它,幫更多的朋友解決困難,呵呵.
uj5u.com熱心網友回復:
比如這個是pb9之前的呼叫方法
Function boolean getxxx (string dwContext) Library "xxx.DLL" Alias for "getxxxA"
pb10以后
Function boolean getxxx (string dwContext) Library "xxx.DLL" Alias for "getxxxW"
因為字符集的不同,所以呼叫的時候,主要區別在這里
A,W
uj5u.com熱心網友回復:
定義改成Function Int csc_4442(Long dev,Int Length,ref blob ata_buffer) Library "Mwic_32.dll " Alias FOR "csc_4442;Ansi "
呼叫之前
blob somevar
somevar =blob(你原來的string,encodingansi!)
函式變數用somevar
uj5u.com熱心網友回復:
告訴你個最有效的方法,在pb9中做好之后,直接升級到pb10,或者pb11,然后看他的代碼變化,直接復制過去就好了,我就是這么搞的,前期也浪費了我N多時間.呵呵.實在不行咱們在交流.uj5u.com熱心網友回復:
樓上的兄弟這樣都成?還讓人活不?咱的代碼量已經超過100M,我哭呀...uj5u.com熱心網友回復:
pb9是ANSI,pb10.5/11是unicodeuj5u.com熱心網友回復:
sybase根本就是個不負責任的小人,沒他這樣搞升級的uj5u.com熱心網友回復:
需要修改DLL,我已經解決。uj5u.com熱心網友回復:
這樣無濟于事的,解決不了問題
我已經解決了
uj5u.com熱心網友回復:
我們也遇到了相同的問題,主要是當中有個asc_hex和hex_asc通過PB11呼叫后不能配對,導致密碼校驗失敗,請問樓上如何搞定的,指教指教uj5u.com熱心網友回復:
upuj5u.com熱心網友回復:
修改DLL才能解決uj5u.com熱心網友回復:
100M? 有點夸張
uj5u.com熱心網友回復:
這樣修改DLL?謝謝!uj5u.com熱心網友回復:
Mwic_32.dll 能發給我么?謝謝![email protected] 謝謝! 我也在做 pb10.5 明華的IC卡 讀卡 還沒明白呀!uj5u.com熱心網友回復:
Mwic_32.dll 能發給我么!謝謝![email protected] pb10.5 明華ic卡uj5u.com熱心網友回復:
其實可以寫個轉換DLL啊,因為你知道如何呼叫明華的DLL,所以,你只對他這個引數改寫就可以了.
根據你呼叫的引數順序和型別,你用VC寫一個DLL,只包含一個函式就可以了.
VC里按ANSI的方法(即原來的呼叫方法對明華的DLL的方式)進行呼叫,得到資料后,轉成UNICODE,再作為VC新建函式的回傳值供PB呼叫,你就可以正常使用了.
使用時,將VC的DLL在PB中登記:
Function boolean getxxx_new (string dwContext) Library "vc.DLL" Alias for "getxxxW"
然后,你以前怎么呼叫明華DLL那個函式的,就這么呼叫VC的這個函式,其它函式還是正常呼叫明華的DLL不用改.只有ANSI轉UNICODE出問題的才轉.這個方法很好用的.
uj5u.com熱心網友回復:
原理很簡單,明華的DLL在ANSI方式下是可以得到正確資料的.那我就用VC并按ANSI方式來呼叫它那個函式,當然也一樣得到了正確的結果.然后VC里就可以將這個正確結果轉成UNICODE的.也就是寬字符的.可以通過MultiByteToWideChar函式實作轉換,例如:
char *szProgID = "我的中文程式名";
WCHAR szWideProgID[128];
long lLen = MultiByteToWideChar(CP_ACP,0,szProgID,strlen(szProgID),szWideProgID,sizeof(szWideProgID));
szWideProgID[lLen] = '\0';
也可以通過A2W宏來實作.
uj5u.com熱心網友回復:
如果需要,可以聯系我的QQ:30101,我幫你轉.轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/102209.html
標籤:腳本語言
下一篇:算不來.怎么辦啊
