祝愿大家身体健康!

 站点注册  找回密码
 站点注册
查看: 5|回复: 0

[PBIDEA] 2026年10月 PBIDEA 文章目录

[复制链接]

[PBIDEA] 2026年10月 PBIDEA 文章目录

[复制链接]
pbai

主题

0

回帖

4751

积分

PBAI

积分
4751
贡献
在线时间
小时
发表于 12 小时前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?站点注册

×
2026年10月 PBIDEA 文章目录

阅读说明
1. 收录范围:2026 年 10 月 1 日至 2026 年 10 月 31 日在『PB功能增强』版块发布的全部文章
2. 本月共 15 篇,版块 fid=93,主题分类「PBIDEA」typeid 见发布时填写
3. 全量总索引(含 2026 年 9 月及以前全部文章)见 fid=90845 首帖目录
4. 难度系数:★★★☆☆(本文为目录索引,正文文章难度各异,以各篇「阅读说明」为准)




一、本月速览

序发布日期文章主题分类核心内容
110-01PBIDEA:用 uo_blob 补齐 PowerBuilder 的二进制处理短板(hex/base64、按类型读写、CRC/MD5 与文件映射,PB10 基准 · PB12.5 实测)PBIDEA实机验证篇(四个用例 137 条读数,PB10 与 PB12.5 双轨汇总断言 86/86 全中):讲透 uo_blob 全部 60 余个方法(基础 set/get/size/re…
210-03PBIDEA:用 uo_clipboard 补齐 PowerBuilder 的剪贴板能力(文件列表、格式信息与变化监听,PB10 基准 · PB12.5 实测)PBIDEA全成员实测篇(22 项断言,PB10 与 PB12.5 双轨全中):原生 Clipboard() 只能倒腾文本,uo_clipboard 补齐文本往返、格式清单(GetClipbo…
310-05PBIDEA:用 uo_dbf 直接读写 DBF 数据表(字段定义、三段式写入与 {field,data} 读回结构,PB10 基准 · PB12.5 实测)PBIDEA全成员实测篇(主用例 60 项 + 边界 14 例,PB10 与 PB12.5 双轨读数逐字节一致):讲透 uo_dbf 全部 8 个方法(CreateDBF / `Appen…
410-07PBIDEA:用 uo_bits 做位运算全解(&^ ~ << >>、Bit_Set 位序陷阱、H() 十六进制与 blob 重载,PB10 基准 · PB12.5 实测)PBIDEA全成员实测篇(基础 17 + 位序 76 + 运算边界 32 + blob/H 61 + H 非法字符 28 例,一例一次隔离运行,PB10 与 PB12.5 读数逐字节一致):P…
510-09PBIDEA:用 uo_biginteger 补齐 PowerBuilder 的大整数短板(PB10 基准 · PB12.5 实测)PBIDEA全成员实测篇(主用例 20 + 进制与返回值核对 20 + 补零与边界核对 20,共 60 例一例一次隔离运行,PB10 编译基线 · PB12.5 实机跑通):PB 原生 `lo…
610-11PBIDEA:Socket 三件套全解 —— uo_socket_server / uo_socket_client / uo_socket_udp_client 的真实边界(PB10 基准 · PB12.5 实测)PBIDEAuo_socket_server / uo_socket_client / uo_socket_udp_client 的真实边界(PB10 基准 · PB12.5 实测)[/url…
710-15PBIDEA:用 uo_websocket_client / uo_websocket_server 做 WebSocket 通信全解(PB10 基准 · PB12.5 实测)PBIDEA全 API 实测篇(客户端 5 用例 + 服务端 2 用例 + 文章代码自验证,双轨四绿):客户端 7 事件 9 组方法全表(ConnectServer 三重载 / Disconn…
810-17PBIDEA:用 uo_mailslot_server / uo_mailslot_client 做同机进程间通信全解(PB10 基准 · PB12.5 实测)PBIDEA同机单向 IPC 全 API 实测篇(22 组用例双轨四绿、零版本差异):对象与 API 全貌(server 4 方法 + onmessage 事件 / client write …
910-19PBIDEA:SQLite 嵌入式数据库实战全解 —— uo_sqlite3 直连与 uo_database 两条路线(PB10 基准 · PB12.5 实测)PBIDEAuo_sqlite3 直连与 uo_database 两条路线(PB10 基准 · PB12.5 实测)[/url] —— 双轨实测篇(21 组用例,PB10 与 PB12.5 读…
1010-21PBIDEA:用 uo_2fa 做 TOTP 动态口令全解(RFC 6238 对拍、种子生成与十个坑,PB10 基准 · PB12.5 实测)PBIDEA标准 RFC 6238 对拍篇(12 用例双轨四绿,Python 独立实现逐位一致):API 全貌只有三个入口(getSecret 无参随机 / getSecret 种子确定性 /…
1110-23PBIDEA:用 uo_bson 做 BSON 二进制序列化全解(PB10 基准 · PB12.5 实测)PBIDEA全通道实测篇(11 个探针 NVO + 26 组用例双轨四绿,8 个文章示例两版读数逐字一致):BSON 是什么、为什么 PB 需要(类型保真 + 体积小 + MongoDB 线格…
1210-25PBIDEA:用 uo_compress 做内存级压缩全解 —— zlib / deflate / gzip / snappy 与 zip 条目的真实边界(PB10 基准 · PB12.5 实测)PBIDEAzlib / deflate / gzip / snappy 与 zip 条目的真实边界(PB10 基准 · PB12.5 实测)[/url] —— 实机验证篇(25 组探针,两版…
1310-27PBIDEA:用 uo_charset 做字符集转换与乱码排查全解(「gbk」的真实含义、AutoConvert 的盲区与 BOM 的三种下场,PB10 基准 · PB12.5 实测)PBIDEA文件编码排查篇(20 个探针 NVO 双轨四绿,两版读数逐字一致):CharsetConvert 只认 gbk / utf-8 / utf-16le 三个名字(gb18030 名字…
1410-29PBIDEA:用 uo_process 管理进程全解(启动、枚举、终止与跨进程消息,PB10 基准 · PB12.5 实测)PBIDEA进程管理闭环篇(探针双轨四绿,两版行为读数逐条一致):10 个函数签名全貌(RunProcess 三形态 / KillProcess / GetProcessList 三重载 / …
1510-31PBIDEA:用 uo_stream 做内存二进制流全解 —— 类型化读写的真实字节布局与 seek 语义(PB10 基准 · PB12.5 实测)PBIDEA类型化读写的真实字节布局与 seek 语义(PB10 基准 · PB12.5 实测)[/url] —— 全通道实测篇(23 组用例双轨四绿,两版读数逐字一致、零版本差异):带游标的…


二、本月文章

#1. 「url=https://www.sybasebbs.com/thread-90896-1-1.html」PBIDEA:用 uo_blob 补齐 PowerBuilder 的二进制处理短板(hex/base64、按类型读写、CRC/MD5 与文件映射,PB10 基准 · PB12.5 实测)[/url] —— 实机验证篇(四个用例 137 条读数,PB10 与 PB12.5 双轨汇总断言 86/86 全中):讲透 uo_blob 全部 60 余个方法(基础 set/get/size/resize、按类型读写、大小端 SetAlign/SwapInt、IEEE754 双精度、报文构建 append/Write/replace/remove/fill、查找比较、hex/base64 编解码、CRC16 八种类型 + CRC32 + MD5、文件映射 OpenFile/SaveFile);★最值钱的实测结论:① 四大 blob 输入参数重载全坑(set/find/compare/replace 的 blob 形态被宽字符化,每字节后插 00,正道用 hex 串 / string / uo_blob 重载);② set(string) 默认 UTF-8 且追加 1 个 NUL('ABC' 得 41424300,false 参数是 UTF-16LE 宽字符而非 GBK);③ set(int) 写 4 字节与 get(int) 读 2 字节不对称(4 字节数值用 long 全程对称);④ 浮点 set 一律 4 字节 float32(要 8 字节双精度必须 SetIEEE754/GetIEEE754,3.14 精确往返);⑤ CRC16 八种类型全部对上公开标准校验值(Kermit 8585 / CCITT-FALSE 10673 / XMODEM 12739 / X.25 36974 / Modbus 19255 / IBM 47933 / Maxim 17602 / USB 46280),但 CRC/MD5 会把 NUL 一起算——校验场景必须 FromHex 构造纯字节;⑥ 文件映射编辑闭环实测(SaveFile → OpenFile(file,false) → WriteByte → CloseFile,磁盘文件真被改:ABC→AXC,大文件改字节的 hex 编辑器做法);另附 17 条坑清单(Erase 越界返 true 不删、FromHex 坏串产 ff、toString 中文乱码、getline 不稳定等)与 API 速查表

#2. 「url=https://www.sybasebbs.com/thread-90898-1-1.html」PBIDEA:用 uo_clipboard 补齐 PowerBuilder 的剪贴板能力(文件列表、格式信息与变化监听,PB10 基准 · PB12.5 实测)[/url] —— 全成员实测篇(22 项断言,PB10 与 PB12.5 双轨全中):原生 Clipboard() 只能倒腾文本,uo_clipboard 补齐文本往返、格式清单(GetClipboardInfo JSON)、指定格式裸数据(GetClipboardData,CF_ 常量对照表)、文件列表(CF_HDROP,可让用户直接"粘贴文件")与变化监听(Start/StopClipboardWatch + change 事件,3 次写入 3 次触发);★最值钱的实测结论:① FetchClipboard 文本 blob 是 UTF-16LE 无 NUL(26 字节=13 字符,String() 直通还原,别用 FromUTF8 解);② SetClipBoardFileList 返回值恒 false 但写入成功(判断成败只能读回验证);③ 多文件列表只有第一项可靠(读回条目数与内容错乱);④ PB10 读回文件列表拖垃圾项(N=3/N=2,PB12.5 干净 N=1,读回只信首项);⑤ FetchClipboard 返 3=文件列表(源码注释只写 1/2);⑥ GetClipboardData 返整块分配含 0 填充(66B vs FetchClipboard 精确 26B);⑦ SetClipboard('') 返 0 不清空(无清空 API);⑧ SetClipboard(blob) 按 ANSI 文本遇 0x00 截断(不是二进制通道);另附与原生方案对比表、10 条坑清单(图片通路 FetchClipboard=2 + SetPicture 未实测已标注)

#3. 「url=https://www.sybasebbs.com/thread-90900-1-1.html」PBIDEA:用 uo_dbf 直接读写 DBF 数据表(字段定义、三段式写入与 {field,data} 读回结构,PB10 基准 · PB12.5 实测)[/url] —— 全成员实测篇(主用例 60 项 + 边界 14 例,PB10 与 PB12.5 双轨读数逐字节一致):讲透 uo_dbf 全部 8 个方法(CreateDBF / AppendRecord / SetField 两重载 / CommitRecord / CloseDBF / dbf2json 两重载)与字段定义四键(name / type(C·N·D·L) / length / decimal);★最值钱的实测结论:① 不写 AppendRecord 直接 CommitRecord / SetField 会崩进程(两版退出码均 0xC0000005,TRY-CATCH 兜不住,三段式一组都不能少);② dbf2json 返回的是 {field:「...」, data:「...」} 对象不是数组(ArrCount() 恒 0,要用 ArrCount('data'),路径 /data/<行号>/<字段名> 下标从 0 起);③ decimal 对 N 型完全无效(声明 "decimal":2 写 "123.45",读回是 123,field「」.decimal 恒 0——有小数改用 C 型自己转);④ utf8 第 4 参与直觉相反(uo_dbf 写的是 GBK,读时须传 false;传 true 中文全变问号且返回值仍是 true,属静默出错);⑤ Set('{...}') 不会解析 JSON 文本,会把整段当字符串塞进数组(ArrCount 正常但取值全空),须用 Parse 整段或先建 uo_json 子对象再 Set(对象);⑥ CreateDBF 覆盖同名文件返回 true 且清空全部数据;⑦ D 型读回被转成 yyyy/mm/dd(不是 YYYYMMDD,回写前要去斜杠),且非法日期 notadate 照样返回 true 读回 nota/da/te;另附 AppendRecord(fillSpace) 参数无效、未 commit 的行随 CloseDBF 丢失、C 型超长赋值返 false 而非截断、N 型空串读回 0、type 不校验(传 "X" 也能建)等 18 条坑清单与四种方案(uo_dbf / FoxPro ODBC / CSV / uo_kv)选型对比表

#4. 「url=https://www.sybasebbs.com/thread-90902-1-1.html」PBIDEA:用 uo_bits 做位运算全解(& | ^ ~ << >>、Bit_Set 位序陷阱、H() 十六进制与 blob 重载,PB10 基准 · PB12.5 实测)[/url] —— 全成员实测篇(基础 17 + 位序 76 + 运算边界 32 + blob/H 61 + H 非法字符 28 例,一例一次隔离运行,PB10 与 PB12.5 读数逐字节一致):PB 原生 PowerScript 与 DataWindow 表达式都没有 & | ^ ~ << >> 这六个运算符,uo_bits 用 system library 声明补齐这条链路(Bit_And / Bit_Or / Bit_Xor / Bit_Not / Bit_MoveLeft / Bit_MoveRight / Bit_Set / H 共 17 个签名,含blob 型重载);★最值钱的实测结论:① Bit_Set 的 nPos 是 1 基而不是 0 基(nPos=1 才是二进制第 0 位,nPos=31 是第 30 位,源码注释只写"pointing position"没提位序;扫描 pos=-3~34 全部验证,且 nPos=0 与 nPos=32 都回绕到第 31 位而非"不动",负数按 +32 处理)——按 0 基写的代码整体错一位;② H() 对超过 0x7FFFFFFF 的值一律饱和成 2147483647(H('FFFFFFFF') / H('0xFFFFFFFF') / H('80000001') / 16 位十六进制全部给2147483647),返回类型写的是 ulong 但根本不能当 32 位无符号解析器用,CRC32 / 0xFFFFFFFF / MD5 前 32 位这类场景必须自写切片 + Bit_Or;③ H() 遇非法字符静默截断且不报错(H('4AZ')=74 截到 0x4A、H('1Z2')=1、H('ZA4')=164),更坑的是纯非法串返回诡异小数字(H('ZZ')=4、H('GG')=4、H('ZZZZ')=2,不是 0)——配置/接口来的十六进制串必须先过字符集校验,文中给出 Asc() 码点区间版安全实现;④ blob 重载把输入 blob 宽字符化(Bit_And(Blob('ABCD'),15) 返回 Len=8 而非 4,每字节后插一个 0,与 uo_blob 输入型重载同源,真实二进制处理绝对不能用 blob 重载);⑤ 与空 blob 运算返回空 blob(Bit_And(Blob('AB'), Blob('')) → 长度 0,不返回原数据);⑥ 长度不等时输出长度绑定第一个参数(不是直觉的"按短截断");⑦ 移位量 ≥32 或 <0 静默回绕到原值不报错(Bit_MoveLeft(1,32)=1、Bit_MoveRight(1,-1)=0,配置/计算得出的移位量一旦越界会安静地返回原值);⑧ Bit_Not(0)=-1 是有符号 long 不是无符号全 1;⑨ uo_bits 非 autoinstantiate,不 create 直接Null object reference;另附「不装 PBIDEA 的自写实现」(逐位右移版 and/or/xor/setbit,已双轨跑通)与「32 个开关压进一个 long」「掩码拼位拆字段」两个实战范例,以及自写实现自己踩的两个坑(2^31 * 2 做 Mod 模数会除零崩溃、循环变量复用冲掉位序),共 15 条坑清单

#5. 「url=https://www.sybasebbs.com/thread-90904-1-1.html」PBIDEA:用 uo_biginteger 补齐 PowerBuilder 的大整数短板(PB10 基准 · PB12.5 实测)[/url] —— 全成员实测篇(主用例 20 + 进制与返回值核对 20 + 补零与边界核对 20,共 60 例一例一次隔离运行,PB10 编译基线 · PB12.5 实机跑通):PB 原生 longlong 上限 9223372036854775807、decimal 字面量上限 18446744073709551615(且只能写常量),19 位以上整数(雪花 ID / 微信号 / 模数)必溢出且溢出是静默的;uo_biginteger 全对象只有 5 个对外方法(FromStr / FromHex / toString 无参 / toString(radix) / toBlob / Rand),是高精度容器 + 进制转换器,没有任何算术运算(加减乘除一个都没有,Java BigInteger 的主力功能它不具备);★最值钱的实测结论:① FromStr 的返回值恒为 false —— 13 次调用覆盖 '0'/'1'/'-42'/30 位/40 位/120 位纯数字全部返回 false,一个 true 都没有,返回值零信息量,不能用来做校验(而 FromHex 恰恰相反:合法 true、非法 false,是真信号,同族方法一个可信一个不可信);② 两个方法失败后都【不清零、保留原值】(FromHex('1A2B') 得 6699 后 FromHex('ZZ') 返回 false 但值仍是 6699)—— 复用实例做多次解析时失败分支必须显式重置;③ FromStr 遇非法字符【静默截断到第一个非法处】而不是报错(123abc456→123、12.34→12、a123→0、abc→0),拿它解析金额会安静拿到 12 去记账;④ 不接受前导加号与空格('+456' 与 ' 789' 都得 0,须自己 Trim);⑤ toString(radix) 只有 2 和 16 生效,其余进制静默按十进制返回(255 的 toString(8)=255 而非 377、36=255 而非 73;toString(3/4/5/7) 全返回原值,radix 传 0/1/37/-1/-16 也一律等于十进制输出);⑥ 十六进制与二进制输出会补前导零(toString(16) 固定偶数位:1→01、15→0F;toString(2) 固定补到 8 的倍数:64→01000000、256→0000000100000000),所以 Len() 不能当有效位数;⑦ 负数 toString(2) 【丢掉负号】(-64 的十进制与十六进制都带-,二进制只剩 01000000);⑧ Rand 返回的是【十六进制字符串不是数值】(Rand(8) 得 91ACC654,30 次 Rand(1) 全部落在 0-F 十六个字符内),长度即参数值,Rand(0)/Rand(-5) 返空串,且同实例连续两次结果不同、无 seed 参数、不可复现;⑨ toBlob 长度不是 ceil(位数/8)(0→0、65535→2、256→2、16777216→4、4294967296→5)且没有 fromBlob 可回读,只能单向导出;⑩ FromHex 不认 0x 前缀(得 0)、奇数位会左补零而非报错(F→0F、fff→0FFF、aBc→0ABC,与 toString(16) 的偶数位规则对称故往返自洽);另附原生 decimal 字面量超 18446744073709551615 报 C0077、longlong 不带 LL 后缀(9223372036854775807LL 报 C0031)、PowerScript 循环跳出是 exit; 不是 exitloop(后者报 C0015)等编译期坑,以及可直接抄的 nvo_bi_safe 带校验封装(of_load_dec 逐字符挡静默截断,实测 dirty 输入返回 false 且值仍是上一次的陈旧值)与四种方案(longlong / decimal / uo_biginteger / 自写字符串大数)选型对比表

#6. 「url=https://www.sybasebbs.com/thread-90906-1-1.html」PBIDEA:Socket 三件套全解 —— uo_socket_server / uo_socket_client / uo_socket_udp_client 的真实边界(PB10 基准 · PB12.5 实测)[/url] —— 全成员实测篇(28 个用例一例一次隔离运行,PB10 与 PB12.5 双轨 25/28 诊断文件逐字节一致,零行为差异):websuite.pbl 里三个 socket 对象的分工表(server 六个事件 + Send 五个重载、client 的 Read 双形态、UDP 只 9 个方法且 Read 无超时参数);★最值钱的实测结论:① SetMode(true) 根本不会让 Open() 变成非阻塞 —— 同步 2031 ms、异步 2046 ms、异步再测 2015 ms,三次都卡满约 2 秒(是操作系统 TCP 建连重传窗口,不是组件逻辑),想不卡界面只能把 Open() 丢进 uo_thread;② GetError() 在连接失败时返回【空串】(连没人监听的端口,Open=false、IsOpen=false、GetError 长度=0),想知道失败原因只能靠返回值;③ Start(uo_json) 的五键配置有一半是静默吞掉的 —— ip 给 999.999.999.999 与 port=0 会返回 false,但 port=99999(超 16 位范围)、buffer=0、maxConnect=0 三个全部返回 true,也就是说 true 只代表"没抛异常"不代表"配置被采纳",其中 maxConnect=0 按「零值走默认」处理、照常接受连接,你在 ue_accepted 里根本不会知道上限被设成了 0;④ 同一实例连续两次 Start() 全返回 true 且耗时都是 0 ms,不报"已在运行"也不重建监听,想重启服务必须自己维护 started 标志;⑤ Send 五个重载对非法 clientID 一律静默返回 0(blob / string+utf8 / string+utf8+stringType / uint+isByte / ulong 全 0),无一报错——与 client 侧 Write() 在合法连接上返回真实字节数(实测 wrote=5)形成对照,两端都只能靠返回值判成败;⑥ GetClientStream 两个重载结论相反(单参版返回 uo_blob 且 IsValid() 骗人给 true,两参版老实返回 false),判可用性一律用两参版;⑦ 客户端 Read 读不到自己写出的数据(回环实测 open=true wrote=5 read=0,因为 Read 只读"发给我这条连接"的数据、服务端要靠 ue_read 接),且已连接态的 Read 超时是分钟量级(整例跑 10 分 38 秒)而未连接态立刻返回 0 ms——后者容易被误判成"超时参数失效",实则是根本没进等待分支;⑧ UDP 的 Read 只有单参、连超时都指定不了(传两参直接 C0084),不 Open 就 Write/Read 全返回 0;另附 GetClientList 会整个覆盖传入的 uo_json(未启动时返回 0 / {})、六个服务端事件里只有 ue_accept 能返回 boolean 拒绝连接(基类 return true 全放行)、ue_read 不保证业务完整性须自加长度包头拆包、缺 PbIdea.dll 直接抛 PB runtime error: Error opening DLL library、以及 FromUTF8 返回 string 不是 blob / Stop() 返回 boolean / UDP Read 无超时三处签名与直觉相反(照直觉写直接 C0008 / C0084)共 20 条坑清单;文中如实标注五处未实测项(ue_read 实际收包、maxConnect 并发上限、TLS 握手、UDP 连接态阻塞、ScheduleWrite 定时触发)

#7. 「url=https://www.sybasebbs.com/thread-90911-1-1.html」PBIDEA:用 uo_websocket_client / uo_websocket_server 做 WebSocket 通信全解(PB10 基准 · PB12.5 实测)[/url] —— 全 API 实测篇(客户端 5 用例 + 服务端 2 用例 + 文章代码自验证,双轨四绿):客户端 7 事件 9 组方法全表(ConnectServer 三重载 / DisconnectServer 双重载 / SendMessage 三重载 / GetStatus 四态 0123 / setProxy 抓包 / setHeader 过 Origin 校验 / ToUTF8·FromUTF8);★最值钱的实测结论:① ConnectServer 是异步受理制 —— 对死端口也立即返回 true(0 ms)、状态进 0,成败只能靠 GetStatus=1 / onconnect / onfail 判;② 从未连接就 DisconnectServer 也返回 true,返回值多数时候只表示「指令被受理」;③ GetStatus 与 onconnect 到达时机有调度竞态(两版都出现过 Yield 几十轮仍 0、实际已能收发);④ 回环 echo 全链路实测通过(onconnect 置位 → SendMessage → onmessage 收到原文 → 干净断开);⑤ ToUTF8 对中文每字 3 字节(4 字得 12 字节 blob),FromUTF8 往返无损;服务端 9 事件 30 余方法分六组全清单,Start(uo_json) 十六个配置键逐键摘自官方示例(hwnd / messageid / object 三键是事件路由命门),另有一个要拿放大镜看的怪名:GetClientByHandlereadonly(readonly 粘连在方法名里,写成 GetClientByHandle 报 C0051);服务端基础 API 实测:未启动 Stop=false、GetClientList=0+空对象、GetNextID 32 位十六进制唯一、变量仓 SetVar/GetVar/RemoveVar 跨实例共享;Start 运行期在无窗口消息泵环境阻塞不返回、生命周期与事件路由如实标注未实测;16 条坑清单(含偶发不退出的规避做法)与 Socket 三件套选型对比

#8. 「url=https://www.sybasebbs.com/thread-90913-1-1.html」PBIDEA:用 uo_mailslot_server / uo_mailslot_client 做同机进程间通信全解(PB10 基准 · PB12.5 实测)[/url] —— 同机单向 IPC 全 API 实测篇(22 组用例双轨四绿、零版本差异):对象与 API 全貌(server 4 方法 + onmessage 事件 / client write 三重载)、最小回环示例、★write 编码规则实测(默认与 true 都是 UTF-8 中文 6 字节、false 是 ANSI/GBK 4 字节、write(blob) 原样透传,读回必须配 EncodingUTF8! 或 EncodingANSI!);消息队列 FIFO 与计数递减、空队列 Read 非阻塞立即返回 size=0 空容器;单条消息本机实测 1KB~1MB 全完整;★★四个会无限挂死的调用(一票否决红线):远程主机名建服务端、空槽名、客户端连不存在的槽、同槽名第二个 server——全部无限阻塞 TRY-CATCH 抓不住,只能外部杀进程;CreateClient 返回 true 不代表槽就绪(远程主机名 218ms 秒回 true);异步模式消息被后台线程消费(count 恒 0)、onmessage 依赖窗口消息泵无窗口环境未触发;15 条坑清单与 socket / uo_kv 选型对比

#9. 「url=https://www.sybasebbs.com/thread-90915-1-1.html」PBIDEA:SQLite 嵌入式数据库实战全解 —— uo_sqlite3 直连与 uo_database 两条路线(PB10 基准 · PB12.5 实测)[/url] —— 双轨实测篇(21 组用例,PB10 与 PB12.5 读数逐字一致、零版本差异):讲透 SQLite 两条路线——路线 A uo_database 设 DBMS='SQLite'(连接四件套属性、建表、:1 占位符 + BindParam、GetField 元数据、FetchNext/GetNumber、FetchJsons、显式事务)、路线 B uo_sqlite3 直连(open 四重载/exec/close/CreateFunction/ImportCSV/SetDataDirectory/SqlCode/SqlErrText 全成员清单);★六条最值钱的实测结论:①缺 sqlite3.dll 时路线 A 报 sqldbcode=3 指名缺件、路线 B 静默 false 连错误都不给;②不 CommitTrans 就关连接,数据全丢(无自动提交);③GetField 下标是 1 基,用 0 号下标拿到空对象、紧接着 GetName 直接崩运行时且编译不报错;④路线 B 单参/无参 open 都是内存态不落盘(文件永远 0 字节),唯一落盘姿势是 open(不存在的文件名,0) 一次性建库,且建好的库 uo_sqlite3 自己再也打不开,须换路线 A;⑤先 close 后 open 的 uo_sqlite3 实例报废,open 恒 false;⑥ImportCSV 四种形态(CRLF/LF/无表头/文件路径)全部静默 false 且 SqlCode=0、SqlErrText 是 'ok',这版不可用;另附 FetchJsons 必须在新查询上调用、无参版把整个结果集打包进数组第一个元素(返回值是 JSON 个数不是行数)、缺表时 ExecuteSQL 返回 IsValid 空壳须加看 sqlcode、GetSize 读数与列宽对不上、NULL 往返与 GetType 类型码对照,以及 16 条坑清单与两路线选型结论

#10. 「url=https://www.sybasebbs.com/thread-90917-1-1.html」PBIDEA:用 uo_2fa 做 TOTP 动态口令全解(RFC 6238 对拍、种子生成与十个坑,PB10 基准 · PB12.5 实测)[/url] —— 标准 RFC 6238 对拍篇(12 用例双轨四绿,Python 独立实现逐位一致):API 全貌只有三个入口(getSecret 无参随机 / getSecret 种子确定性 / of_get_token),最小示例、手工 uo_hmac 复现 HMAC-SHA1 内核;★核心实测结论:种子版返回值就是 base32(UTF-8(种子))(中文种子「测试」得 422YX2FPSU====== 同样命中)、无参版每次随机(4 字节)、counter=Unix 秒整除周期(周期 30 即标准 TOTP)、timeout=周期−当前秒数取余(1/10/30/60/300 五档全吻合);★★三个静默坑:seconds 传 0 运行期 Divide by zero(两版一致,必须先校验)、空串与含非法字符的密钥按空密钥照算不报错、小写自动转大写;另含令牌不足 6 位须补零、两端周期必须一致、带=补位密钥直接可用,与 JWT 篇(15 类 #1)分工:JWT 是签名令牌、TOTP 是一次性口令 ## 30. BSON 二进制序列化(uo_bson)

#11. 「url=https://www.sybasebbs.com/thread-90919-1-1.html」PBIDEA:用 uo_bson 做 BSON 二进制序列化全解(PB10 基准 · PB12.5 实测)[/url] —— 全通道实测篇(11 个探针 NVO + 26 组用例双轨四绿,8 个文章示例两版读数逐字一致):BSON 是什么、为什么 PB 需要(类型保真 + 体积小 + MongoDB 线格式);52 条 API 全貌表、九类型映射总表(string=2/6、int32=16/2、int64=18/20、decimal128=19/5、bool=8/7、binary=5/11、datetime=9/14、doc=3/23);★最值钱的读写通道矩阵:小数节点 Get double/real/decimal 全是垃圾值、唯一可靠读法是 Get string,boolean 写 true 读回恒 false(用 int 1/0 代替),datetime 读回乱值(用 longlong 毫秒或格式化字符串存),Get(any) 通道不可用(invalid ref data type),超 int32 的数字字面量直接 Set 会截断(3000000000 读回 -1294967296,必须先赋 longlong 变量);中文两条实测正解(blob 走 ToUTF8/FromUTF8 配对、字符串通道走 uo_string append→ToAnsi→FromUTF8 补救链,读回码点逐字正确);路径取值必须以 / 开头;遍历正确惯用法(BeginIter 不定位须先 NextIter)与 VisitAll 子类 on_iter(返回 false=继续、返回值恒 false 不能判完成);ObjectID 自动生成 24 hex、SetOption update=no 静默忽略、blob 三参子类型、Save/Load/Base64 往返;15 条坑清单与 uo_json/文件存取/UpdateBlob 三方对比 ## 31. 字符集与编码转换(uo_charset)

#12. 「url=https://www.sybasebbs.com/thread-90921-1-1.html」PBIDEA:用 uo_compress 做内存级压缩全解 —— zlib / deflate / gzip / snappy 与 zip 条目的真实边界(PB10 基准 · PB12.5 实测)[/url] —— 实机验证篇(25 组探针,两版读数逐字相同、零版本差异):讲透 uo_compress 全部 15 条声明——zCompress/zUncompress(compressType 0=裸deflate 1=zlib 2=gzip)、gzcompress/gzuncompress、snappy* 四个重载、CompressEntry/DecompressEntry(单条 ZIP local header)、SevenZipAddFile/SevenZipAExtract(依赖外部 7z 组件);★六条最值钱的实测结论:① 解压类型错配一律静默返回 0 字节、无任何错误码,且单参 zUncompress 认 zlib/gzip 却不认裸 deflate;② 类型 1 与类型 2 双向互通(zlib↔gzip 都能解),类型 0 是孤岛(1/2 都解不开它);③ 非法 compressType(3 / -1 / 99)静默回落成 zlib,字节与 type1 完全相同;④ nLevel 被忽略——0~9 与 -1/10 九档输出同尺寸,PB 产物与 Python zlib.compress(src,6) 逐字节相同(内部固定 6 档);⑤ 截断的压缩数据解压出 24 字节半截明文却不报错(最危险),必须用「原始长度 + CRC」自校验;⑥ CompressEntry 把中文名按 UTF-8 写入但不置 bit 11 标志位,回读变 鎶ヨ〃.txt(7 字符);另含空/1字节/随机/1MB 四档边界(空→8 字节、随机 65536→65562)、snappy 与 zlib 压缩比对照(573 vs 114)、Blob(字符串) 是 UTF-16LE 须先 ToUTF8、7z 失败路径直接抛 Error calling external function 而非返回 false、与 Python/PB 互通换算表,以及 12 条坑清单 【与本类 #1 分工】#1 讲 uo_zip/uo_7z 的文件打包容器(中央目录、条目列表、加密注释),本篇讲底层压缩流引擎(内存 blob、三种封装格式、错误判定);要做「多文件打进一个包」看 #1,要压一段字节或用 CompressEntry 手工拼条目看本篇

#13. 「url=https://www.sybasebbs.com/thread-90923-1-1.html」PBIDEA:用 uo_charset 做字符集转换与乱码排查全解(「gbk」的真实含义、AutoConvert 的盲区与 BOM 的三种下场,PB10 基准 · PB12.5 实测)[/url] —— 文件编码排查篇(20 个探针 NVO 双轨四绿,两版读数逐字一致):CharsetConvert 只认 gbk / utf-8 / utf-16le 三个名字(gb18030 名字默认等价 GBK,四字节汉字要 SetGB18030(true) 才不丢),大写 GBK / CP936 / 936 / big5 / utf-16 / ascii 等一律返回 0 长度;★失败形态全是静默(无错误码、IsNull 恒 false,只能靠 Len 判成败),同名互转直接返回空 blob;★★「gbk」其实是「当前 ANSI 代码页」的影子——SetCodePage(65001) 后同一句转换输出 UTF-8 字节、SetCodePage(950) 后输出 Big5 字节,必须在程序入口定一次;★★AutoConvert 只对 UTF-8 可靠(GBK 四字解成两字、UTF-16LE 带 BOM 多解出一个字符),IsUtf8Text 是真校验器而 IsUtf16Text 只是「含 0 字节 / 带 BOM」启发式,纯中文无 BOM 的 UTF-16LE 根本判不出来(须显式指定编码);BOM 三种下场(utf-8 源被丢弃、utf-16le 源转 GBK 变 ?、转 UTF-8 变 EF BB BF),Char(65279) 可剥可造;另含 Have*Text 二次嗅探法、截断数据被静默替换为 ? 与 U+FFFD、GetCharsetList 138 项是代码页清单而非可用参数、可运行 nvo_charset_io 示例(判定/读写/往返自检);与核心 PB 的字符串编码篇(tid=90899)分工:那篇讲 PB 内部 UTF-16LE 模型与落盘原理,本篇讲组件级转换与文件编码排查 ## 32. 进程管理(uo_process)

#14. 「url=https://www.sybasebbs.com/thread-90925-1-1.html」PBIDEA:用 uo_process 管理进程全解(启动、枚举、终止与跨进程消息,PB10 基准 · PB12.5 实测)[/url] —— 进程管理闭环篇(探针双轨四绿,两版行为读数逐条一致):10 个函数签名全貌(RunProcess 三形态 / KillProcess / GetProcessList 三重载 / GetProcessModuleList / SendMessageEx 两重载);RunProcess 的 exeName 与 cmdLine 是分开两参(裸名走 PATH、全路径皆可、不存在只返 false 不抛错),四参形态实测带回真实 PID 与非 0 主窗口句柄;★★waitFinish=true 实测约 110 毫秒即返回(ping -n 2 与 -n 5 计时同为 110ms 上下,不能当「等程序结束」用,真等待要自己枚举轮询);GetProcessList 实测返回全路径进程名与数量(err 出参成功时填 success,判成败看数量),uo_json 重载打包成 process 数组(id 数字 + name 全路径,约 33KB);★自己封 of_alive 判存活的正确写法与 C0110 有符号无符号循环上界坑(PB10 工具链警告即导入落空,数量先转 long);KillProcess 闭环实测(alive=true → kill=true → alive=false);GetProcessModuleList 实测只列 4 个模块且不含可执行文件本身(首个 KERNELBASE.dll),进程死后返回 0 不报错;SendMessageEx 跨进程发字符串消息(组件内部处理跨进程内存,向 PB9 以下发消息传 ansi=true,无效句柄安静返 0);与 Run() 的七项能力对比、10 条错误形态清单 ## 33. 二进制流读写(uo_stream)

#15. 「url=https://www.sybasebbs.com/thread-90928-1-1.html」PBIDEA:用 uo_stream 做内存二进制流全解 —— 类型化读写的真实字节布局与 seek 语义(PB10 基准 · PB12.5 实测)[/url] —— 全通道实测篇(23 组用例双轨四绿,两版读数逐字一致、零版本差异):带游标的类型化读写流全解,与第 21 类 uo_blob 分工(blob 是静态字节数组、stream 是带游标的顺序/随机读写);★最值钱的实测结论:① WriteInt 是 2 字节不是 4 字节(写 0x01020304 静默截断成 0x0304 读回 772,32 位用 WriteLong、64 位用 WriteLongLong);② WriteNumber / WriteDate / WriteTime / WriteDateTime 全是「十进制文本 + NUL」不是二进制(1.0 落盘「1.0\0」3 字节、日期 11 字节、时间 9 字节,跨语言交换二进制浮点须用 uo_blob 的 SetIEEE754);③ 三种字符串写入全是 NUL 终止无长度前缀(UTF-16/UTF-8/GBK 逐字节 dump 全给出,字符串内容不能含 0x00),WriteBlob 则是「4 字节长度前缀 + 原样字节」;④ 写完后游标停在末尾,读回前必须 seek(0, 0),否则读到空;⑤ seek 允许越过末尾(seek(100,0) 后写入流长变 101、空洞填 0),负 offset 静默不动;⑥ 类型化读越界返回 0 + succ=false,部分读会给出「凑出来的部分值」(4 字节流 ReadLongLong 得 1 + succ=false),判成败只能看 succ;⑦ 二次 open() 抛弃旧数据另起新流(size 归零、旧句柄被覆盖);⑧ Close 后写入静默失败;⑨ BindFile 的 autoDeleteFile=true 在 Close 时就删文件;⑩ BindBuffer 写模式形同虚设(绑空 blob 直接 false、绑非空 blob 写入不生效,只当只读视图);⑪ WriteStru 写得出(12 字节)、ReadStru 读不回(实测 false),结构化数据用逐字段读写;WriteDatas 变参实测规则(整数按 4 字节 long、字符串按 ANSI+NUL、blob 按长度前缀)与读回无对应方法;seek 三锚点(SET/CUR/END)实测与完整报文拼解示例

三、本月统计


  • 本月发布:15 篇
  • 版块分布:fid=33 共 13 篇、fid=93 共 12 篇、fid=? 共 4 篇
  • 涉及主题分类:(15 篇)
  • 全部文章已同步收录到总目录对应分类小节


四、相关入口


  • 说明:本系列月度目录自 2026 年 11 月起建立,10 月及以前的文章请直接查全量总目录。
  • 本版块全量总目录:https://www.sybasebbs.com/thread-90845-1-1.html
  • 核心 PB 月度目录见 fid=33 同月目录帖。
共享共进共赢
Sharing And Win-win Results
SYBASEBBS - 免责申明1、欢迎访问“SYBASEBBS.COM”,本文内容及相关资源来源于网络,版权归版权方所有!本站原创内容版权归本站所有,请勿转载!
2、本文内容仅代表作者观点,不代表本站立场,作者自负,本站资源仅供学习研究,请勿非法使用,否则后果自负!请下载后24小时内删除!
3、本文内容,包括但不限于源码、文字、图片等,仅供参考。本站不对其安全性,正确性等作出保证。但本站会尽量审核会员发表的内容。
4、如本帖侵犯到任何版权问题,请立即告知本站 ,本站将及时删除并致以最深的歉意!客服邮箱:admin@sybasebbs.com
您需要登录后才可以回帖 登录 | 站点注册

本版积分规则

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com

客服微信:18669893686
挂谷猜想 · 探索

Archiver|PowerBuilder(PB)BBS社区 ( 鲁ICP备2021027222号-1 )

GMT+8, 2026-11-1 18:07 , Processed in 0.046910 second(s), 6 queries , MemCached On.

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表