### 寫在前面 也許現在的你需要用PB完成畢業設計、需要維護遠古時代的代碼,又或者是你呆的公司就是要求要用PB開發項目。 不管你是出於什麼原因還在使用PB,不可否認PB在數據視窗非常優秀,熟練使用之後開發資料庫相關的應用非常高效 但由於PB這一框架出現得比較早,而且主要用於傳統基於資料庫得CS開發 ...
寫在前面
也許現在的你需要用PB完成畢業設計、需要維護遠古時代的代碼,又或者是你呆的公司就是要求要用PB開發項目。
不管你是出於什麼原因還在使用PB,不可否認PB在數據視窗非常優秀,熟練使用之後開發資料庫相關的應用非常高效
但由於PB這一框架出現得比較早,而且主要用於傳統基於資料庫得CS開發。
在網路、系統、數據傳輸等方面有很多欠缺,需要實現某些功能特別費勁,需要引入各種動態庫才能實現
一、PB項目開發痛點
- 調用基於
http
協議開發的webapi
介面實現方式單一 - 數據傳輸格式
json
數據的封裝與解析不方便 - 各種加密解密或者簽名演算法實現比較困難
utf8
、utf16
、ansi
等字元集編碼相互轉換困難- 沒法處理大文件(幾百兆的txt文件下載,導入)
二、Pbidea來了
既然PB中存在這些問題,但又不得不使用PB時。
你是不是會想PB中有沒有類似與Java中Hutool
、fastjson
、Log4j
等等這樣的類庫呢?
當然是有的,它就是今天要推薦給你的Pbidea.dll
。
Pbidea
是大自在大佬開發的,平常大家都喊在叔。並且該項目一直在維護中,就在昨天20230804還發佈了一個新版本。
它不僅可以解決上面的痛點,還封裝了很多擴展功能,方便PBer們使用。
利用它,你甚至可以使用在PB中使用redis
、RibbitMQ
、kafka
等這樣的高併發組件。
還有你平常覺得在PB中很難實現的pdf
、圖片展現處理等等都能輕鬆實現。
這些怎麼時候,在後面會一一說明
三、Pbidea 介紹
3.1 下載
① 通過GitHub下載
https://github.com/lxb320124/pbidea
② 通過QQ群下載
GitHub上面好像沒有同步更新,如果你需要最新的需要通過QQ群文件下載。
由於這裡不方便發群,小伙伴們找不到可以私信哦。最新版是昨天(2023年08月04日更新的)
3.2 文件目錄簡介
從上面渠道下載完項目後解壓,目錄如下。
你需要關註的主要是兩個目錄。9-->裡面是基於PB9的demo
。10-->是基於PB9以上版本的demo
3.4 運行起來
既然demo都下載下來了,那麼當然是要跑起來看看了。個人電腦上安裝的是PB12.5 ,所以就打開了10目錄下的demo
① 打開工作空間
② 選擇文件夾10下麵的pbjson.pbw
③ 直接運行
四、Pbidea 使用
從上面運行起來的demo中,我們可以看到,Pbidea
包含瞭如下功能
json/bson/xml
等各種交換格式httpclient
- 加/解密和編碼
- FTP/sFTP/FTP伺服器
- 擴展數據類型(map,string等)
- 壓縮/解壓縮
- 資料庫擴展
PDF
瀏覽與dw2pdf
- 圖形圖片條碼、多媒體
- 數據視窗增強
- websocket和tcp/ip客戶端
- 高併發組件
- 物聯網開發和只能設備
- 電腦/列印及系統
- 控制項與界面美觀
- 其他
PowerBuilder
擴展功能 - 行業應用案例
接下來的小節中,將帶大家怎麼找對應功能的代碼。並對部分功能簡單一一說明
4.1 項目代碼說明
① websuit.pbl-->uo_json
中申明動態庫
②pbjons-->uo_tabpage_json
調用上面申明好的動態庫中方法(具體代碼實現)
4.2 json/bson/xm
等各種交換格式 模塊
①提供功能
- 快速解析和生成
json
,基於datawinow
導入導出 bson
數據的解析和生成xml
文件、字元串解析和生成
②涉及uo對象及可視化uo
uo_json
、uo_xml
、uo_bjson
uo_tabpage_json
、uo_tabpage_xml
、uo_tabpage_bson
③界面位置
4.3 httpclient
模塊
① 提供功能
- 提供基於
Winhttp
的http/https
協議的數據訪問,封裝由下載和上傳功能,可以直接傳輸json
對象,自帶utf8
轉碼 - 提供基於
libcurl
的http/https
協議的數據訪問,封裝由下載和上傳功能,可以直接傳輸json
對象,自帶utf8
轉碼
②涉及uo對象及可視化uo
uo_httpclient
、uo_curl
uo_tabpage_httpclient
、uo_tabpage_curl
③界面位置
4.4 加/解密和編碼
基於openssl實現常用功能
① 提供功能
-
RSA
公鑰私鑰生成,加密、解密、簽名和驗簽 -
CRC32
、CRC16
、CRC18
校驗 -
MD5、SHA、SM3、base64、urlencode/urldecode、timestamp等編碼解密
-
AES、DES、3DES、SM4 等加密解密功能
② 涉及uo對象及可視化uo
uo_crypto
uo_tabpage_crypto_rsa
、uo_tabpage_crypto_crc
、uo_tabpage_crypto_a
、uo_tabpage_crypto_sm2
、uo_tabpage_crypto_asn1
③ 截圖
4.5 FTP/sFTP/FTP伺服器
① 提供功能
- 提供一個ftp伺服器,可以共用本機文件給客戶端
- 基於libftp,完全從底層協議實現的ftp客戶端
- 基於ssh協議的FTP 客戶端,除上傳下載以外,還可以在服務端執行操作系統命令,相當於合併了ssh功能
②涉及uo對象及可視化uo
uo_ftp_server
、uo_ftp
uo_tabpage_ftp_server
、uo_tabpage_ftp
、uo_tabpage_ftp_browser
、uo_tabpage_sftp
③ 截圖
4.6 擴展數據類型(map、string等)
①提供功能
- 擴展實現了map容器
- 擴展了二進位數據處理功能
- 擴展了字元串處理功能
- 正則表達式搜索、匹配、替換
- 大文本按行處理
- 字元集轉換
- 直接讀寫文本文件
- 字元串分割
- 控制台輸出調試功能
- 位操作與進位轉換
- 大整數
biginteger
處理功能 - 日期事件處理與計算
②涉及uo對象及可視化uo
uo_map
、uo_blob
、uo_string
、uo_bits
、uo_biginteger
、uo_datatime
uo_tabpage_map_asn1
、uo_tabpage_blob
、uo_tabpage_string
、uo_tabpage_bits
、uo_tabpage_biginteger
、uo_tabpage_datatime
③ 截圖
4.7 壓縮/解壓縮
①提供功能
- 提供zip格式的壓縮和解壓縮功能(還可以將BLOB數據添加進壓縮包,或者將壓縮包內容讀取到BLOB變數)
- 提供數據流壓縮和解壓縮功能。支持壓縮、解壓縮.gz格式文件
②涉及uo對象及可視化uo
uo_zip
、uo_compress
uo_tabpage_zip
、uo_tabpage_compress
③ 截圖
4.8 資料庫擴展
① 提供功能
- 提供眾多資料庫連接支持,快速高效範圍資料庫和結果集
- 自身資料庫改進,支持斷線檢測功能
- dbf文件的導入與導出
- 解析Oracle的TNS文件為json格式
- 提供非關係型資料庫的支持
②涉及uo對象及可視化uo
uo_database
、uo_transation
、uo_dbf
、uo_json
、`uo_kv``uo_tabpage_sql
、uo_tabpage_transation
、uo_tabpage_dbf
、uo_tabpage_kv
③ 截圖
4.9 PDF瀏覽與dw2dbf
① 提供功能
- 載入pdf文件,可列印和另存
- 將pdf文件轉換成圖片
- 將pdf轉換為純文本內容,可取到每個單詞
- 在指定位置添加圖片
- 添加手寫簽名
- dw生成pdf文件和圖片
②涉及uo對象及可視化uo
uo_pdfmaker
、uo_pdfview
uo_tabpage_pdf_maker
、uo_tabpage_pdf_view
、uo_tabpage_pdf_fpsb
、uo_tabpage_pdf_merge
③ 截圖
4.10 圖形圖形條形碼、多媒體
① 提供功能
- 支持bmp、jpg、png、emf、wmf、gif、tif等格式圖片載入、顯示轉換
- 支持條碼、二維碼生成
- 支持條碼、二維碼識別
- 圖片瀏覽控制項
- 圖形處理工具,類似於windows自帶的繪圖工具
- 音頻文件合併閱讀
② 涉及uo對象及可視化uo
-
uo_image
、uo_imageview
、uo_painter
、uo_wavfile
、uo_speak
、uo_speak_recognize
-
uo_tabpage_image
、uo_tabpage_code
、uo_tabpage_symbol
、uo_tabpage_image_view
、uo_tabpage_painter_chart_arc
、uo_tabpage_painter_chart_area
、uo_tabpage_painter_chart_bar
、uo_tabpage_painter_chart_bar3d
、uo_tabpage_painter_chart_barline
、uo_tabpage_painter_chart_guage
、uo_tabpage_painter_chart_hbar
、uo_tabpage_painter_chart_line
、uo_tabpage_painter_chart_npie
、uo_tabpage_painter_chart_percent
、uo_tabpage_painter_chart_pie
、uo_tabpage_painter_chart_radar
、uo_tabpage_painter_chart_scatter
、uo_tabpage_painter_clip、uo_tabpage_painter_image
、uo_tabpage_painter_re
、uo_tabpage_wav
、
uo_tabpage_speak
、uo_tabpage_recognize
③ 截圖
4.11 數據視窗增強
① 提供功能
- datawindow與excel導入與導出
- 拖拽功能,可用於排班、排房間等業務
- 超大文本文件導入(幾百兆txt文件導入)
- 滑鼠拖拽選取獲取datawindow數據
- 數據視窗解析為json數據
- 實時生成圖片
②涉及uo對象及可視化uo
uo_datawindowex
、uo_drag_datawindow
、vuo_selected_datawindow
、uo_json
uo_tabpage_excel
、uo_tabpage_drag_datawindow
、uo_tabpage_datawindow
、uo_tabpage_datawindow_seletect
、
uo_tabpage_datawindow_syntax
、uo_tabpage_datawindow_dimage
③ 截圖
4.12 websocket和tcp/ip客戶端
① 提供功能
- websocket客戶端
- socket客戶端
- ping、支持帶埠的ping
- 基於smtp協議發送郵件
- 基於pop協議接收郵件,並將接收到的郵件解析為json結構方便使用
② 涉及uo對象及可視化uo
uo_websocket_client
、uo_socket_client
、uo_mail
uo_tabpage_ws_client
、uo_tabpage_socket_client
、uo_tabpage_ping
、uo_tabpage_mail
③ 截圖
4.13 高併發組件
① 提供功能
- 提供
RibbitMQ
功能 - 提供
kafka
功能 - 提供
mqtt
功能 - 提供
redis
緩存共功能
② 涉及uo對象及可視化uo
uo_rabbitmq
、uo_rabbitmq_exchange
、uo_rabbitmq_queue
、uo_kafka_consumer
、uo_kafka_producer
uo_mqtt
、uo_redis
uo_tabpage_hc_rabbitmq
、uo_tabpage_hc_kafka
、uo_tabpage_hc_mqtt
、uo_tabpage_hc_redis
③ 截圖
4.14 物聯網開發和只能設備
① 提供功能
- 提供modbus-tcp功能
- 海康指紋儀
- 串口通訊
- 讀取身份證信息
② 涉及uo對象及可視化uo
uo_modbus_tcp
、uo_fingerprint
、uo_serial
、uo_sdtapi
uo_tabpage_modbus
、uo_tabpage_fingerprint
、uo_tabpage_serial
、uo_tabpage_sdtapi
③ 截圖
1.15 電腦/印表機及系統
① 提供功能
- 印表機控制相關功能
- 無驅動印表機
- 取ip、cpu序列號等信息
- 多顯示器管理
- 視窗子類化處理、攔截視窗信息,自己做出判斷處理
- 多線程和進程數據共用
- 系統環境變數管理
② 涉及uo對象及可視化uo
uo_printer
、uo_printer_usb
、uo_hardware
、uo_monitor
、uo_subclass
、uo_thread_factory
、uo_thread
、uo_sysenv
uo_tabpage_printer
、uo_tabpage_printer_usb
、uo_tabpage_printer_hardware
、uo_tabpage_printer_monitor
、
uo_tabpage_system
、uo_tabpage_subclass
、uo_tabpage_thread
、uo_tabpage_env
③ 截圖
1.16 控制項與界面美觀
① 提供功能
- 打開和保存對話框美化
- 編輯器語法高亮功能
- 計算器控制項
- 漂亮日曆控制項,支持滑鼠、鍵盤 操作日期可快速跳轉
- 不同類型進度條
- 內置字體圖標
- 基於微軟最新edge webview2的瀏覽器控制項
② 涉及uo對象及可視化uo
-
uo_scintilla
、uo_calculator
、uo_calendar
、uo_wait_box
、uo_progress
、uo_messagewidget
、uo_webview2
-
uo_tabpage_opensave
、uo_tabpage_scintilla
、uo_tabpage_calculator
、uo_tabpage_calendar
、uo_tabpage_progress
、uo_tabpage_awesome
、uo_tabpage_webview2
、uo_tabpage_webview2_2
③ 截圖
1.17 其他PowerBuilder擴展功能
① 提供功能
- 各種雜項函數和功能集合
- 保護pbd不受反編譯
- 文件讀寫操作增強功能
- dll函數調用
- pb動態編譯
- 配置文件及序列化
②涉及uo對象及可視化uo
uo_utils
、uo_file
、uo_blob
、uo_string
、uo_logfile
、uo_dll
、uo_orca
、uo_config
uo_tabpage_pb_reader
、uo_tabpage_pb_var
、uo_tabpage_pb_safe
、uo_tabpage_file_op
uo_tabpage_dll
、uo_tabpage_orca
、uo_tabpage_config
③ 截圖
1.18 行業應用和案例
① 提供的功能
-
阿裡cbs簽名
-
內蒙古預算管理一體化系統介面簽名
-
農業銀行商戶介面簽名
-
贛州銀行開放介面平臺
-
工商銀行二維碼被掃支付介面
-
建行互聯網銀企直連請求加密及返回驗簽方法
-
國家醫保目錄上傳下載介面
-
諾諾企業發票介面加密
②涉及uo對象及可視化uo
uo_crypto
、uo_httpclient
、uo_curl
uo_tabpage_bussess_csb
、uo_tabpage_bussess_nmys
、uo_tabpage_bussess_nyyhsh
、
uo_tabpage_bussess_gzbank
、uo_tabpage_bussess_ghpay
、uo_tabpage_bussess_yb_ud
、
uo_tabpage_bussess_nnfp
③ 截圖
以上對Pbidea
提供的18個功能做了簡要說明,有什麼不清楚的就多看看demo。
五、怎麼在項目中使用Pbidea
5.1 新項目
如果是新項目,新建項目之後,直接將Pbidea.dll
放入到指定路徑,並將websuite.pbl
、sciter.pbl
、sql.pbl
、web.pbl
、web_client.pbl
、painter.pbl
、haikang.pbl
加入到工作空間中即可,當然瞭如果你只用到其中的部分功能,可以先只加入websuite.pbl
① 將Pbidea.dll
拷貝到項目跟目錄
②右鍵選擇Properties...
③ 選擇需要添加的pbl文件(pbl文件路徑和項目路徑同一個目錄)
5.2 老項目
如果是老項目,項目中新建的uo可能與Pbidea中的uo衝突,真個引入進去可能會影響原來代碼功能
我們只能按需引入,確保引入的uo和之前項目中的uo不衝突
六、小結
工欲善其事必先利其器,多花費一點時間研究下Pbidea
,儘量每個demo都點一點,做到心中有數。
當我們在工作中遇到類似的需求時,就可以參考著demo中實現即可。
用了這麼久PB,Pbidea
最好的擴展功能動態庫了,沒有之一
本期內容到此就結束了,希望對你有所幫助。
我們下期再見 (●'◡'●)
本文來自博客園,作者:xiezhr,轉載請註明原文鏈接:https://www.cnblogs.com/xiezhr/p/17612916.html