日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

dw2xls已升级至pb11.5

發(fā)布時間:2023/12/9 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dw2xls已升级至pb11.5 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

dw2xls已經(jīng)開發(fā)了好幾年了,最近也把這個程序開源了,由于自已一直以來都是用pb9開發(fā)程序,還沒有升級到更高的版本,所以一直都沒去升級這個程序.這兩年經(jīng)常會收到一些朋友的來信,詢問如何把dw2xls升級到pb10或以上更高的版本,甚至部分用反編譯程序的朋友,為了這個功能,都愿意付費購買.考慮到一些朋友在升級過程中,還是會碰過一些困難,為了方便大家,所以決定還是自已把程序升級到pb11.5,并提供給大家下載.如果使用pb10, pb10.5, pb11版本的朋友,請使用開發(fā)工具直接進行升級,然后再把附件中的n_cst_unicode.sru, n_cst_dw2excel.sru兩個文件,導入到dw2xls.pbl文件即可.

???????在這里,隨便說一下pb10以下版本的程序,如果升級到pb10以上版本,需要注意的地方:
???????PB10以下版本的程序,字符串使用的ANSI編碼,pb10或以上版本,使用的是Unicode編碼,所以在API函數(shù)定義上,會有些出入.大部分在參數(shù)或返回值中使用了字符串的Windows API函數(shù),都提供了兩個版本的API,一個是支持ANSI的,一般在函數(shù)后面加個A作為標記,一個是支持Unicode的,一般在函數(shù)后面加W(WideChar)作為標記.如GetWindowTextA和GetWindowTextW,所以在pb9時,定義API函數(shù)一般使用的是ANSI版本(因為PB9使用的是ANSI編碼),如果是升級到PB10或以后版本,則可以把API函數(shù)定義為使用Unicode版本即可,而不是使用PB程序直接升級的那樣,繼續(xù)采用Ansi版本.
??????此外,PB在定義Windows Api時,大小寫是敏感的,這個跟PBScript不同,也是需要注意的地方.
??????PB9新增加了兩個函數(shù) TOAnsi 和ToUnicode,分別可以把字符串轉換為Uncicode編碼的Blob類型的數(shù)據(jù),或把Uncicode編碼類型的Blob數(shù)量,轉換為使用Ansi的字符串.而pb11.5,這兩個函數(shù)在使用的時,提示該函數(shù)在以后的版本可能不支持,所以不直接使用.PB 11.5使用String和Blob函數(shù)進行字符串編碼數(shù)據(jù)類型的轉換,并且可以指定字符編碼的類型.

??????通過以上分析可以發(fā)現(xiàn),如果在pb11.5中,把API函數(shù)定義為使用Ansi版本的話,操作是比較麻煩的,可能會涉及到字符串數(shù)據(jù)類型的轉換,而如果定義為直接使用Unicode版本,則方便很多.

??????附注: dw2xls從pb9升級到pb11.5所修改后的地方:
??????1.修改n_cst_dw2excel中Local External Function以下兩上Api函數(shù)的定義,直接使用Unicode版本
??????Function boolean GetTextExtentPoint32A(ulong hdcr, string lpString, long nCount, ref os_size size) Library "GDI32.DLL"

FUNCTION ulong GetLocaleInfo(ulong Locale,ulong LCType,ref string lpLCData,ulong cchData) LIBRARY "kernel32.dll" ALIAS FOR "GetLocaleInfoA"?
??????更改后:
??????Function boolean GetTextExtentPoint32W(ulong hdcr, string lpString, long nCount, ref os_size size) Library "GDI32.DLL"?
??????FUNCTION ulong GetLocaleInfo(ulong Locale,ulong LCType,ref string lpLCData,ulong cchData) LIBRARY "kernel32.dll" ALIAS FOR "GetLocaleInfoW"?
??????其中:GetTextExtentPoint32W的名稱與原來的定義不同,所以同時修改了代碼中使用到該Api的地方.如果不想修改代碼,可以直接把API改為:
???????Function boolean GetTextExtentPoint32A(ulong hdcr, string lpString, long nCount, ref os_size size) Library "GDI32.DLL"?Alias For "GetTextExtentPoint32W"
??????但這樣以維護代碼時,可能會容易理解錯誤,所以不建議.

??????2.修改n_cst_unicode對象
?????? 把OF_Ansi2Unicode函數(shù)原來的代碼全部屏蔽掉,直接使用pb的內(nèi)部函數(shù): Return Blob(as_Value)
?????? 把OF_Unicode2Ansi函數(shù)原來的代碼全部屏蔽掉,直接使用pb的內(nèi)部函數(shù): Return String(a_Value)
????
??????修改后運行程序, 一切OK,不會出錯所謂的亂碼問題.而且可以發(fā)現(xiàn),需要修改的地方很少,修改的代碼也非常少.

???????需要的朋友,可從這里下載 dw2xls for pb11.5 source code

總結

以上是生活随笔為你收集整理的dw2xls已升级至pb11.5的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。