马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?站点注册
×
## PbIdea - PowerBuilder 现代化增强组件库全面介绍
作者:在神
---
一、什么是 PbIdea
PbIdea 是一个专为 PowerBuilder 开发的增强组件库(PbIdea.dll),提供 153+ 个用户对象和视觉对象,让传统的 PowerBuilder 具备现代化的开发能力。
核心原理:所有对象通过 system library "PbIdea.dll" alias for "..." 调用原生 DLL 函数,在 PB 中实现丰富的系统级操作。
---
二、功能模块总览
1、网络通信(12 个对象)
uo_httpclient - 基于 winhttp 的 HTTP 客户端
uo_curl - 基于 curl 库的 HTTP 客户端
uo_curl_async - 异步 HTTP 客户端
uo_socket_client - Socket 客户端
uo_socket_server - Socket 服务器
uo_websocket_client - WebSocket 客户端
uo_websocket_server - WebSocket 服务器
uo_ftp - FTP 客户端
uo_ftp_server - FTP 服务器
uo_sftp - SFTP 客户端
uo_udp_client - UDP 客户端
- // HTTP GET 请求
- uo_curl lcURL = create uo_curl
- lcURL.SetUrl("https://api.example.com/data", HttpGet)
- lcURL.SetTimeout(5000)
- boolean lb_ok = lcURL.request()
- if lb_ok then
- MessageBox("结果", lcURL.response.text)
- end if
- destroy lcURL
- // HTTP POST 请求
- uo_curl lcURL = create uo_curl
- lcURL.SetUrl("https://api.example.com/api", HttpPost)
- lcURL.SetHeader("Content-Type", "application/json")
- uo_json ljson = create uo_json
- ljson.Set("name", "张三")
- lcURL.request(ljson)
- destroy ljson
- destroy lcURL
复制代码
---
2、加密与安全(7 个对象)
uo_crypto - 全能加密库(AES/RSA/SM2/3/4/MD5/SHA/Base64)
uo_rsa - RSA 专用加密
uo_biginteger - 大整数运算
uo_jwt - JWT 令牌
支持算法:
- 对称加密:AES、DES、SM4、ChaCha20
- 非对称加密:RSA、SM2
- 哈希算法:MD5、SHA1/256/512、SM3
- 编码:Base64、Hex、URL 编码
- 校验:CRC32、CRC16、Adler32
- // AES 加密
- blob lb_data = blob("敏感数据")
- blob lb_encrypted = Crypto(lb_data, "my-secret-key", 1, "aes_256_cbc", "0123456789abcdef")
- blob lb_decrypted = Crypto(lb_encrypted, "my-secret-key", 0, "aes_256_cbc", "0123456789abcdef")
- // SM2 国密加密
- string ls_pubkey, ls_prikey
- GenerateSM2Key(ls_pubkey, ls_prikey)
- blob lb_encrypted = SM2Encrypt(ls_pubkey, "测试数据", 1)
- blob lb_decrypted = SM2Decrypt(ls_prikey, lb_encrypted, 1)
复制代码
---
3、数据格式(10 个对象)
uo_json - JSON 解析与操作
uo_xml - XML 解析
uo_bson - BSON 二进制 JSON
uo_kv - 键值对本地缓存
uo_structure - 动态结构体
uo_asn1 - ASN1 编码解码
- // JSON 操作
- uo_json ljson = create uo_json
- ljson.Parse('{"name":"张三","age":25}')
- string ls_name = ljson.GetString("name")
- long ll_age = ljson.GetLong("age")
- // 构建 JSON
- uo_json ljson2 = create uo_json
- ljson2.Set("name", "李四")
- ljson2.Set("age", 30)
- string ls_result = ljson2.ToString(true)
- destroy ljson
- destroy ljson2
复制代码
---
4、数据库(6 个对象)
uo_database - 数据库操作
uo_database_pool - 数据库连接池
uo_recordset - 记录集
uo_field - 字段操作
uo_transaction - 事务管理
uo_sqlite3 - SQLite 支持
- uo_database ldb = create uo_database
- ldb.DBMS = "MSS"
- ldb.ServerName = "localhost"
- ldb.DatabaseName = "mydb"
- ldb.LogID = "sa"
- ldb.LogPassword = "password"
- ldb.Open()
- uo_recordset lrs = ldb.ExecuteSQL("SELECT * FROM users")
- do while lrs.FetchNext()
- string ls_name = lrs.GetField("name").GetString()
- loop
- ldb.Close()
- destroy ldb
复制代码
---
5、文件与压缩(14 个对象)
uo_file - 文件操作
uo_dir - 目录操作
uo_blob - 二进制数据处理
uo_zip - ZIP 压缩解压缩
uo_7z - 7Z 压缩解压缩
uo_compress - zlib/gzip/snappy 压缩
---
6、电子文档(14 个对象)
uo_xls - Excel 97-2003 读写
uo_xlsx - Excel 2007+ 读写
uo_pdfmaker - PDF 生成
uo_pdfview - PDF 查看
uo_pdfwriter - PDF 编辑
uo_ofd - OFD 电子文档
uo_svg - SVG 图像
uo_dicom - DICOM 医疗图像
- // PDF 查看
- uo_pdfview lpdf = create uo_pdfview
- lpdf.Load("C:\\report.pdf")
- long ll_pagecount = lpdf.GetPageCount()
- string ls_text = lpdf.GetPageText(1)
- destroy lpdf
- // Excel 写入
- uo_xlsx lxlsx = create uo_xlsx
- lxlsx.Open("C:\\data.xlsx")
- lxlsx.SetCellValue(1, 1, "姓名")
- lxlsx.SetCellValue(1, 2, "年龄")
- lxlsx.Save()
- destroy lxlsx
复制代码
---
7、UI 控件(21 个对象)
uo_chart - 图表控件
uo_calendar - 日历控件
uo_webview2 - WebView2 浏览器控件
uo_imageview - 图片查看器
uo_scintilla - 代码编辑器
uo_progress - 进度条
uo_trayicon - 托盘图标
uo_tooltip - 工具提示
---
8、消息队列与缓存(9 个对象)
uo_redis - Redis 客户端
uo_redisasync - Redis 异步客户端
uo_mqtt - MQTT 消息队列
uo_kafka_consumer - Kafka 消费者
uo_kafka_producer - Kafka 生产者
uo_rabbitmq - RabbitMQ
---
9、系统工具(18 个对象)
uo_thread - 多线程
uo_timer - 定时器
uo_process - 进程管理
uo_hardware - 硬件信息
uo_hook - 消息钩子
uo_subclass - 窗口子类化
uo_shellapi - Shell API
---
10、硬件与设备
uo_serial - 串口通信
uo_modbus_tcp - Modbus TCP 协议
uo_fingerprint - 指纹仪
uo_hcusb - 身份证读卡器
uo_printer - 打印机
uo_printer_usb - USB 无驱打印机
---
11、其他实用对象
uo_logger - 日志记录
uo_mail - 邮件发送
uo_lua - Lua 脚本引擎
uo_dns - DNS 解析
uo_yibao - 医保接口
uo_csharp - C# DLL 互操作
---
三、基本使用模式
- // 1. 声明对象
- uo_json ljson
- // 2. 创建对象
- ljson = create uo_json
- // 3. 使用对象
- ljson.Parse('{"name":"张三"}')
- string ls_name = ljson.GetString("name")
- // 4. 销毁对象(重要!)
- destroy ljson
复制代码
注意事项:
1. 所有 uo_* 对象使用完毕后必须 destroy,否则内存泄漏
2. 字符串转 blob 时注意字符集,PB10+ 默认 UTF-16LE
3. 数据库连接池对象(uo_database_pool)专为多线程设计
---
四、核心优势
1. 功能全面 - 覆盖网络、加密、数据库、UI、硬件等全方位需求
2. 国密支持 - 完整支持 SM2/SM3/SM4 国密算法,满足等保要求
3. 现代化 - 支持 HTTP/2、WebSocket、Redis、Kafka 等现代技术
4. 易用性 - PowerBuilder 原生对象,无需额外语法
5. 性能优秀 - 基于原生 DLL,性能远超 PB 自带功能
6. 持续更新 - 不断新增功能,保持与技术发展同步
---
五、适用场景
- 需要在 PB 中调用 HTTP API
- 需要加密/解密(特别是国密算法)
- 需要处理 JSON/XML 数据
- 需要操作 Excel/PDF 文档
- 需要连接 Redis/Kafka/MQTT 等中间件
- 需要串口/硬件设备通信
- 需要现代化 UI 控件
- 需要多线程处理
---
六、获取与部署
1. 下载 PbIdea.dll
2. 将 DLL 放到程序目录或系统目录
3. 在 PB 中引用 DLL
4. 创建 uo_* 对象即可使用
---
七、总结
PbIdea 让 PowerBuilder 重获新生,从传统的桌面开发工具转变为具备现代化能力的开发平台。无论是老旧系统改造,还是新项目开发,PbIdea 都能提供强大的支持。
推荐指数:★★★★★
---
作者:在神
本文基于 PbIdea 官方文档整理,如有错误欢迎指正。 |