PB從入坑到放棄(七)PBer們的福音來了

来源:https://www.cnblogs.com/xiezhr/archive/2023/08/08/17612916.html
-Advertisement-
Play Games

### 寫在前面 也許現在的你需要用PB完成畢業設計、需要維護遠古時代的代碼,又或者是你呆的公司就是要求要用PB開發項目。 不管你是出於什麼原因還在使用PB,不可否認PB在數據視窗非常優秀,熟練使用之後開發資料庫相關的應用非常高效 但由於PB這一框架出現得比較早,而且主要用於傳統基於資料庫得CS開發 ...


寫在前面

也許現在的你需要用PB完成畢業設計、需要維護遠古時代的代碼,又或者是你呆的公司就是要求要用PB開發項目。

不管你是出於什麼原因還在使用PB,不可否認PB在數據視窗非常優秀,熟練使用之後開發資料庫相關的應用非常高效

但由於PB這一框架出現得比較早,而且主要用於傳統基於資料庫得CS開發。

在網路、系統、數據傳輸等方面有很多欠缺,需要實現某些功能特別費勁,需要引入各種動態庫才能實現

一、PB項目開發痛點

  • 調用基於http協議開發的webapi介面實現方式單一
  • 數據傳輸格式json數據的封裝與解析不方便
  • 各種加密解密或者簽名演算法實現比較困難
  • utf8utf16ansi等字元集編碼相互轉換困難
  • 沒法處理大文件(幾百兆的txt文件下載,導入)

二、Pbidea來了

既然PB中存在這些問題,但又不得不使用PB時。

你是不是會想PB中有沒有類似與Java中HutoolfastjsonLog4j等等這樣的類庫呢?

當然是有的,它就是今天要推薦給你的Pbidea.dll

Pbidea是大自在大佬開發的,平常大家都喊在叔。並且該項目一直在維護中,就在昨天20230804還發佈了一個新版本。

它不僅可以解決上面的痛點,還封裝了很多擴展功能,方便PBer們使用。

利用它,你甚至可以使用在PB中使用redisRibbitMQkafka 等這樣的高併發組件。

還有你平常覺得在PB中很難實現的pdf、圖片展現處理等等都能輕鬆實現。

這些怎麼時候,在後面會一一說明

三、Pbidea 介紹

3.1 下載

① 通過GitHub下載

https://github.com/lxb320124/pbidea

github下載

② 通過QQ群下載

GitHub上面好像沒有同步更新,如果你需要最新的需要通過QQ群文件下載。

由於這裡不方便發群,小伙伴們找不到可以私信哦。最新版是昨天(2023年08月04日更新的)

一直在更新中

3.2 文件目錄簡介

從上面渠道下載完項目後解壓,目錄如下。

你需要關註的主要是兩個目錄。9-->裡面是基於PB9的demo。10-->是基於PB9以上版本的demo

image-20230805140854501

3.4 運行起來

既然demo都下載下來了,那麼當然是要跑起來看看了。個人電腦上安裝的是PB12.5 ,所以就打開了10目錄下的demo

① 打開工作空間

打開工作空間

② 選擇文件夾10下麵的pbjson.pbw

選擇pbjson.pbw

③ 直接運行

image-20230805141636685

demo界面

四、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_jsonuo_xmluo_bjson
  • uo_tabpage_jsonuo_tabpage_xmluo_tabpage_bson

③界面位置

image-20230805172444863

4.3 httpclient 模塊

① 提供功能

  • 提供基於Winhttphttp/https協議的數據訪問,封裝由下載和上傳功能,可以直接傳輸json對象,自帶utf8轉碼
  • 提供基於libcurlhttp/https協議的數據訪問,封裝由下載和上傳功能,可以直接傳輸json對象,自帶utf8轉碼

②涉及uo對象及可視化uo

  • uo_httpclientuo_curl
  • uo_tabpage_httpclientuo_tabpage_curl

③界面位置

image-20230805173153992

4.4 加/解密和編碼

基於openssl實現常用功能

① 提供功能

  • RSA公鑰私鑰生成,加密、解密、簽名和驗簽

  • CRC32CRC16CRC18校驗

  • MD5、SHA、SM3、base64、urlencode/urldecode、timestamp等編碼解密

  • AES、DES、3DES、SM4 等加密解密功能

② 涉及uo對象及可視化uo

  • uo_crypto
  • uo_tabpage_crypto_rsauo_tabpage_crypto_crcuo_tabpage_crypto_auo_tabpage_crypto_sm2uo_tabpage_crypto_asn1

③ 截圖

加/解密和編碼

4.5 FTP/sFTP/FTP伺服器

① 提供功能

  • 提供一個ftp伺服器,可以共用本機文件給客戶端
  • 基於libftp,完全從底層協議實現的ftp客戶端
  • 基於ssh協議的FTP 客戶端,除上傳下載以外,還可以在服務端執行操作系統命令,相當於合併了ssh功能

②涉及uo對象及可視化uo

  • uo_ftp_serveruo_ftp
  • uo_tabpage_ftp_serveruo_tabpage_ftpuo_tabpage_ftp_browseruo_tabpage_sftp

③ 截圖

ftp相關

4.6 擴展數據類型(map、string等)

①提供功能

  • 擴展實現了map容器
  • 擴展了二進位數據處理功能
  • 擴展了字元串處理功能
    • 正則表達式搜索、匹配、替換
    • 大文本按行處理
    • 字元集轉換
    • 直接讀寫文本文件
    • 字元串分割
    • 控制台輸出調試功能
  • 位操作與進位轉換
  • 大整數biginteger處理功能
  • 日期事件處理與計算

②涉及uo對象及可視化uo

  • uo_mapuo_blobuo_stringuo_bitsuo_bigintegeruo_datatime
  • uo_tabpage_map_asn1uo_tabpage_blobuo_tabpage_stringuo_tabpage_bitsuo_tabpage_bigintegeruo_tabpage_datatime

③ 截圖

擴展數據類型

4.7 壓縮/解壓縮

①提供功能

  • 提供zip格式的壓縮和解壓縮功能(還可以將BLOB數據添加進壓縮包,或者將壓縮包內容讀取到BLOB變數)
  • 提供數據流壓縮和解壓縮功能。支持壓縮、解壓縮.gz格式文件

②涉及uo對象及可視化uo

  • uo_zipuo_compress
  • uo_tabpage_zipuo_tabpage_compress

③ 截圖

壓縮與解壓縮

4.8 資料庫擴展

① 提供功能

  • 提供眾多資料庫連接支持,快速高效範圍資料庫和結果集
  • 自身資料庫改進,支持斷線檢測功能
  • dbf文件的導入與導出
  • 解析Oracle的TNS文件為json格式
  • 提供非關係型資料庫的支持

②涉及uo對象及可視化uo

  • uo_databaseuo_transationuo_dbfuo_json、`uo_kv``
  • uo_tabpage_sqluo_tabpage_transationuo_tabpage_dbfuo_tabpage_kv

③ 截圖

資料庫擴展

4.9 PDF瀏覽與dw2dbf

① 提供功能

  • 載入pdf文件,可列印和另存
  • 將pdf文件轉換成圖片
  • 將pdf轉換為純文本內容,可取到每個單詞
  • 在指定位置添加圖片
  • 添加手寫簽名
  • dw生成pdf文件和圖片

②涉及uo對象及可視化uo

  • uo_pdfmakeruo_pdfview
  • uo_tabpage_pdf_makeruo_tabpage_pdf_viewuo_tabpage_pdf_fpsbuo_tabpage_pdf_merge

③ 截圖

pdf相關

4.10 圖形圖形條形碼、多媒體

① 提供功能

  • 支持bmp、jpg、png、emf、wmf、gif、tif等格式圖片載入、顯示轉換
  • 支持條碼、二維碼生成
  • 支持條碼、二維碼識別
  • 圖片瀏覽控制項
  • 圖形處理工具,類似於windows自帶的繪圖工具
  • 音頻文件合併閱讀

② 涉及uo對象及可視化uo

  • uo_imageuo_imageviewuo_painteruo_wavfileuo_speakuo_speak_recognize

  • uo_tabpage_imageuo_tabpage_codeuo_tabpage_symboluo_tabpage_image_viewuo_tabpage_painter_chart_arcuo_tabpage_painter_chart_areauo_tabpage_painter_chart_baruo_tabpage_painter_chart_bar3d

    uo_tabpage_painter_chart_barlineuo_tabpage_painter_chart_guageuo_tabpage_painter_chart_hbar

    uo_tabpage_painter_chart_lineuo_tabpage_painter_chart_npieuo_tabpage_painter_chart_percent

    uo_tabpage_painter_chart_pieuo_tabpage_painter_chart_radaruo_tabpage_painter_chart_scatter

    uo_tabpage_painter_clip、uo_tabpage_painter_imageuo_tabpage_painter_reuo_tabpage_wav

uo_tabpage_speakuo_tabpage_recognize

③ 截圖

圖形圖形條形碼、多媒體

4.11 數據視窗增強

① 提供功能

  • datawindow與excel導入與導出
  • 拖拽功能,可用於排班、排房間等業務
  • 超大文本文件導入(幾百兆txt文件導入)
  • 滑鼠拖拽選取獲取datawindow數據
  • 數據視窗解析為json數據
  • 實時生成圖片

②涉及uo對象及可視化uo

  • uo_datawindowexuo_drag_datawindowvuo_selected_datawindowuo_json
  • uo_tabpage_exceluo_tabpage_drag_datawindowuo_tabpage_datawindowuo_tabpage_datawindow_seletect

uo_tabpage_datawindow_syntaxuo_tabpage_datawindow_dimage

③ 截圖

數據視窗增強

4.12 websocket和tcp/ip客戶端

① 提供功能

  • websocket客戶端
  • socket客戶端
  • ping、支持帶埠的ping
  • 基於smtp協議發送郵件
  • 基於pop協議接收郵件,並將接收到的郵件解析為json結構方便使用

② 涉及uo對象及可視化uo

  • uo_websocket_clientuo_socket_clientuo_mail
  • uo_tabpage_ws_clientuo_tabpage_socket_clientuo_tabpage_pinguo_tabpage_mail

③ 截圖

websocket和tcp/ip客戶端

4.13 高併發組件

① 提供功能

  • 提供RibbitMQ 功能
  • 提供kafka功能
  • 提供mqtt功能
  • 提供redis緩存共功能

② 涉及uo對象及可視化uo

  • uo_rabbitmquo_rabbitmq_exchangeuo_rabbitmq_queueuo_kafka_consumeruo_kafka_producer

uo_mqttuo_redis

  • uo_tabpage_hc_rabbitmquo_tabpage_hc_kafkauo_tabpage_hc_mqttuo_tabpage_hc_redis

③ 截圖

高併發組件

4.14 物聯網開發和只能設備

① 提供功能

  • 提供modbus-tcp功能
  • 海康指紋儀
  • 串口通訊
  • 讀取身份證信息

② 涉及uo對象及可視化uo

  • uo_modbus_tcpuo_fingerprintuo_serialuo_sdtapi
  • uo_tabpage_modbusuo_tabpage_fingerprintuo_tabpage_serialuo_tabpage_sdtapi

③ 截圖

物聯網開發和只能設備

1.15 電腦/印表機及系統

① 提供功能

  • 印表機控制相關功能
  • 無驅動印表機
  • 取ip、cpu序列號等信息
  • 多顯示器管理
  • 視窗子類化處理、攔截視窗信息,自己做出判斷處理
  • 多線程和進程數據共用
  • 系統環境變數管理

② 涉及uo對象及可視化uo

  • uo_printeruo_printer_usbuo_hardwareuo_monitoruo_subclassuo_thread_factoryuo_threaduo_sysenv
  • uo_tabpage_printeruo_tabpage_printer_usbuo_tabpage_printer_hardwareuo_tabpage_printer_monitor

uo_tabpage_systemuo_tabpage_subclassuo_tabpage_threaduo_tabpage_env

③ 截圖

電腦/印表機及系統

1.16 控制項與界面美觀

① 提供功能

  • 打開和保存對話框美化
  • 編輯器語法高亮功能
  • 計算器控制項
  • 漂亮日曆控制項,支持滑鼠、鍵盤 操作日期可快速跳轉
  • 不同類型進度條
  • 內置字體圖標
  • 基於微軟最新edge webview2的瀏覽器控制項

② 涉及uo對象及可視化uo

  • uo_scintillauo_calculatoruo_calendaruo_wait_boxuo_progressuo_messagewidgetuo_webview2

  • uo_tabpage_opensaveuo_tabpage_scintillauo_tabpage_calculatoruo_tabpage_calendaruo_tabpage_progress

    uo_tabpage_awesome uo_tabpage_webview2uo_tabpage_webview2_2

③ 截圖

控制項與界面美觀

1.17 其他PowerBuilder擴展功能

① 提供功能

  • 各種雜項函數和功能集合
  • 保護pbd不受反編譯
  • 文件讀寫操作增強功能
  • dll函數調用
  • pb動態編譯
  • 配置文件及序列化

②涉及uo對象及可視化uo

  • uo_utilsuo_fileuo_blobuo_stringuo_logfileuo_dlluo_orcauo_config
  • uo_tabpage_pb_readeruo_tabpage_pb_varuo_tabpage_pb_safeuo_tabpage_file_op

uo_tabpage_dlluo_tabpage_orcauo_tabpage_config

③ 截圖

其他PowerBuilder擴展功能

1.18 行業應用和案例

① 提供的功能

  • 阿裡cbs簽名

  • 內蒙古預算管理一體化系統介面簽名

  • 農業銀行商戶介面簽名

  • 贛州銀行開放介面平臺

  • 工商銀行二維碼被掃支付介面

  • 建行互聯網銀企直連請求加密及返回驗簽方法

  • 國家醫保目錄上傳下載介面

  • 諾諾企業發票介面加密

②涉及uo對象及可視化uo

  • uo_cryptouo_httpclientuo_curl
  • uo_tabpage_bussess_csbuo_tabpage_bussess_nmysuo_tabpage_bussess_nyyhsh

uo_tabpage_bussess_gzbankuo_tabpage_bussess_ghpayuo_tabpage_bussess_yb_ud

uo_tabpage_bussess_nnfp

③ 截圖

行業應用和案例

以上對Pbidea 提供的18個功能做了簡要說明,有什麼不清楚的就多看看demo。

五、怎麼在項目中使用Pbidea

5.1 新項目

如果是新項目,新建項目之後,直接將Pbidea.dll放入到指定路徑,並將websuite.pblsciter.pblsql.pblweb.pblweb_client.pblpainter.pblhaikang.pbl 加入到工作空間中即可,當然瞭如果你只用到其中的部分功能,可以先只加入websuite.pbl

① 將Pbidea.dll拷貝到項目跟目錄

image-20230805221707825

②右鍵選擇Properties...

右鍵選擇Properties...

③ 選擇需要添加的pbl文件(pbl文件路徑和項目路徑同一個目錄)

選擇需要添加的pbl文件

編寫代碼

5.2 老項目

如果是老項目,項目中新建的uo可能與Pbidea中的uo衝突,真個引入進去可能會影響原來代碼功能

我們只能按需引入,確保引入的uo和之前項目中的uo不衝突

六、小結

工欲善其事必先利其器,多花費一點時間研究下Pbidea,儘量每個demo都點一點,做到心中有數。

當我們在工作中遇到類似的需求時,就可以參考著demo中實現即可。

用了這麼久PB,Pbidea最好的擴展功能動態庫了,沒有之一

本期內容到此就結束了,希望對你有所幫助。

我們下期再見 (●'◡'●)

本文來自博客園,作者:xiezhr,轉載請註明原文鏈接:https://www.cnblogs.com/xiezhr/p/17612916.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • # 基於python tornado實現的簡易圖床 項目地址 > 因為買了阿裡/騰訊的雲伺服器,但是使用雲存儲還需要收費,又加上家裡正好有一臺`nas`,又加上閑的沒事,所以搞了一個小腳本 > > 這個項目主要功能是為`typora`增加一個自定義圖床 > > 歡迎提出issues和pr,如果閑的沒 ...
  • # 一、前言 [從零玩轉系列之微信支付實戰PC端支付微信取消介面搭建 | 技術創作特訓營第一期 ](​https://cloud.tencent.com/developer/article/2308342) halo各位大佬很久沒更新了最近在搞微信支付,因商戶號審核了我半個月和小程式認證也找了資料並 ...
  • ## Spring ​ 涉及的設計模式:單例模式,簡單工廠模式,代理模式,觀察者模式,反射,註解。。。。。 ### Spring配置文件文件頭 ```xml ``` ### IOC 控制反轉 將創建對象的權力由開發者交 給 Spring(緩解對象和對象之間的耦合度) ​ 在傳統模式下,對象的創建和賦 ...
  • QT性能優化之QT6框架高性能模型視圖代理框架千萬級數據表分頁查詢優化 簡介 本文介紹了QT模型視圖代理框架中的QT表格控制項和QT資料庫模塊中的QT資料庫查詢模型結合使用的一個應用實踐案例:QT高性能表格控制項分頁展示千萬行數據。本文介紹了這個應用實踐案例的運行效果和源代碼。這個應用實踐案例實測運行表 ...
  • ## 教程簡介 PDFBox是一個開源Java庫,支持PDF文檔的開發和轉換.使用此庫,您可以開發用於創建,轉換和操作PDF文檔的Java程式.除此之外,PDFBox還包括一個命令行實用程式,用於使用可用的PDF對PDF執行各種操作Jar文件. [PDFBox入門教程](https://www.it ...
  • 本文從源碼層面介紹了Spring如何創建bean、如何解決迴圈依賴,同時也介紹了不能解決哪些迴圈依賴,同時在文章的最後解決迴圈依賴報錯的幾個方法 ...
  • 作者:樹洞君 \ 鏈接:https://juejin.cn/post/7064376361334358046 # 事故描述 從6點32分開始少量用戶訪問app時會出現首頁訪問異常,到7點20分首頁服務大規模不可用,7點36分問題解決。 # 整體經過 6:58 發現報警,同時發現群里反饋首頁出現網路繁 ...
  • ## 一. 時間複雜度 - 時間複雜度簡單的說就是一個程式運行所消耗的時間,叫做時間複雜度,我們無法目測一個程式具體的時間複雜度,但是我們可以估計大概的時間複雜度。 - 一段好的代碼的就根據演算法的時間複雜度,即使在大量數據下也能保持高效的運行速率,這也是我們學習演算法的必要性。 ### 1.1 大O表 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...