祝愿大家身体健康!

 站点注册  找回密码
 站点注册

QQ登录

只需一步,快速开始

查看: 7531|回复: 8

[PB idea] PbIdea(支持XP)当前20211221版PowerBuilder IDE 功能增强插件

[复制链接]

[PB idea] PbIdea(支持XP)当前20211221版PowerBuilder IDE 功能增强插件

[复制链接]
ehxz

主题

0

回帖

57万

积分

管理员

积分
570724
贡献
在线时间
小时
2021-12-21 14:09:52 | 显示全部楼层 |阅读模式

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

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

×
下载地址:
1蓝奏云盘(直接下载建议 )、https://dwn.lanzouw.com/b0113zk2d
密码:ggoq

1阿里云盘(可以存自己空间)、https://www.aliyundrive.com/s/YwPEFP7VuBK 提取码: 0iep
最新版本:PbIdea(支持XP) 20211221版

版本说明:

PowerBuilder IDE 功能增强插件。目前开发的版本支持常见所有PB版本。本群另有大量PB扩展库资源,群主有大量原创作品。可为2021年新医保提供全套技术支撑和技术支持。

官方QQ群:624409252

修改说明,更多功能,请见楼下。

使用说明:
    开始之前,建议先花点时间,阅读一下本说明。

    这是一个基于JSON及webapi 接口的强大PowerBuilder接口扩展库。支持版本 pb8 - pb2019.
    一、JSON部分
    好用的 json for PB ,与 datawindow/datasore 无缝对接,能动态创建 dw/ds实现数据导入,也可以在现有dw/ds上按列匹配导入。
    实时导入导出 json,速度快,效率高。
    uo_json功能函数主要有4个,即:
    1、Parse:将字符串转为JSON对象
    2、ToString:将JSON对象转为字符串
    3、Set:设置JSON对象或数组值
    4、Get:获取JSON对象或数组值
    在有多层嵌套的情况下,可以使用级联字符串直接取值。例如
    [
    {
    "__rowid__":1,
    "id":1.0,
    "sj":"2020-02-17",
    "sub":
        [
        {"__rowid__":1,"id":1.0,"mch":"菜1","dj":9.0,"je":7.0},
        {"__rowid__":2,"id":1.0,"mch":"菜2","dj":1.0,"je":3.0},
        {"__rowid__":3,"id":1.0,"mch":"菜3","dj":7.0,"je":1.0},
        {"__rowid__":4,"id":1.0,"mch":"菜4","dj":5.0,"je":9.0}
        ]
    }
    ]
    要取得第一行数组"菜3"下面的dj,可以这样写key字符串:
    deciaml ld_dj
    json.Get("/0/sub/2/dj",ref ld_dj)
    "/0/sub/2/dj"这个串里,第一个0表示是大数组的第1行数据,sub表示第一行数据是JSON,取其sub的值,sub的值是一个JSON数组。然后跟着的2表示取子数组的第3行数据,key为dj,取值类型为 decimal。
    ***这里注意,与PB的数组下限从1开始到n结束不同,这里JSON数组下限是0从开始,n-1结束。

    二、HttpClient部分
    开发了PBJson,然后突然就感到HttpClient也成了必然需要。由此写了这么个HttpClient。因为以前用HttpClient不多,经验不够,不足之处,在所难免。见谅!

    HttpClient内部使用了 WinHttp API:
    1.使用简单,主要只有一个参数Request,完成请求。参数说明,请参看 uo_httpclient Local External Functions 里的声明
    2.借助 pbjson,可完美与 json,datawindow 结合工作。
    3.uo_httpclient 内置了一个变量 uo_response response,用于记录各种响应结果和数据。

    4.先了解一下请求类别
    //静态变量,require 函数的第一个参数 nHttpType
    constant int HttpGet      = 1
    constant int HttpPost     = 2
    constant int HttpPut      = 3

    5.很有必要事先了解一下,httpclient 发送 request 后,会返回哪些内容。
    string header          //保存 httpclient 的response header
    string headerlist[]    //保存 httpclient 的response header 关键字
    blob   data            //保存 httpclient 的结果,不仅限于文本,也可能是其他二进制数据。在只是文本的情况下,可以取 text 值
    int    errcode         //返回值错误值
    string errtext         //返回值错误文本
    int    httpcode        //200 正常 , 404 501
    string verb            //POST ,PUT ,GET 。。。
    long   timeout = 5000  //默认5秒超时
    string charset         //语言编码 utf-8 gbk 等
    string ContentType     //text/html application/json等
    string Server          //服务器类型
    string text            //文本,由data转换而来。对utf8,GBK,UNICODE各种类型做了自动转换为当前文字编码。在多数情况下,此文本是可用的。但不排除响应结果是非文本情况,例如图片、声音等二进制数据,那就必须读取 data才能获取正确结果。
    uo_json json           //当返回Content-Type: application/json时,会生成此 json 对象

    三、加密解密、编码部分
    提供 RSA、AES、DES、签名、base64、CRC、urlencode ......等实现功能。

    有任何BUG或者建议,可以我联系。

                    大自在(QQ:781770213 群:624409252)
共享共进共赢Sharing And Win-win Results
SYBASEBBS - 免责申明1、欢迎访问“SYBASEBBS.COM”,本文内容及相关资源来源于网络,版权归版权方所有!本站原创内容版权归本站所有,请勿转载!
2、本文内容仅代表作者观点,不代表本站立场,作者自负,本站资源仅供学习研究,请勿非法使用,否则后果自负!请下载后24小时内删除!
3、本文内容,包括但不限于源码、文字、图片等,仅供参考。本站不对其安全性,正确性等作出保证。但本站会尽量审核会员发表的内容。
4、如本帖侵犯到任何版权问题,请立即告知本站 ,本站将及时删除并致以最深的歉意!客服邮箱:admin@sybasebbs.com
ehxz 楼主

主题

0

回帖

57万

积分

管理员

积分
570724
贡献
在线时间
小时
2021-12-21 14:10:04 | 显示全部楼层
/******************************************************************************************************
* 特别注意:自2021年8月24日起,因pbjson.dll与官方最新版本DLL重名,特此更名为 pbidea.dll,内部功能完全兼容。
*                             原有版本升级,只需要将 pbidea.dll 改名为 pbjson.dll ,然后覆盖,即可!
******************************************************************************************************/

2019/11/26
1.修改 true/false 类型读写的BUG
2.修复导出JSON时取 decimal 列的一个BUG
3.dwExportJson 增加了一个参数,DWItemStatus  : 0:NotModified! , 1:DataModified! ,2:New!,3:NewModified! ,可以指定只导出这些状态的数据

2019/11/28
1.数字型导入DW的一个BUG
2.第一行为null的字段,后面默认都当长度为20的字符串处理

2019/11/29
1.(*)修复内存泄漏的BUG
2.(*)增加两个模式,直接从文件导入dw/ds,和直接将 dw/ds存为文件,几万条数据秒读秒写.

2019/11/30
全面优化,10W条记录,秒读秒写

2019/12/2
增加一组函数,使用方法很简单:
/******************************************************************************************************
* 特别注意,这组函数必须放在 datawindow/datastore 的继承类中 Local External Function 里面声明 !!!
******************************************************************************************************/
//此函数放在 dw/ds 的继承类中使用
//使用方法,在dw/ds 的继承类中 Local External Function 里面声明此函数,然后直接就可以 dw_1.ImportJson("data.json")
function long    ImportJson(string jsonFile) system library "PbJsonA.dll" alias for "ImportJson"

//将datawindow/datastore 数据生成JSON,返回生成条数,status : 0:NotModified! , 1:DataModified! ,2:New!,3:NewModified!       
//参数jsonFile为直接生成到文件
//3个参数,可以任意组合,自己声明吧
//使用方法,在dw/ds 的继承类中 Local External Function 里面声明此函数,然后直接就可以 dw_1.ExportJson("data.json")
function long    ExportJson(string jsonFile) system library "PbJsonA.dll" alias for "ExportJson"
function long    ExportJson(int status) system library "PbJsonA.dll" alias for "ExportJson"
function long    ExportJson(int status ,string jsonFile) system library "PbJsonA.dll" alias for "ExportJson"
//只导出listColumns指定的所有列数
function long    ExportJson(string listColumns[]) system library "PbJsonA.dll" alias for "ExportJson"
function long    ExportJson(string listColumns[],string jsonFile) system library "PbJsonA.dll" alias for "ExportJson"

使用方法很简单:
dw_2.ImportJson("json5.txt")
dw_2.ExportJson("export.txt")
给你原生无异。


2019/12/4
增导入列映射功能。
第一步,设置印象 ,印射方式为 "json关键字":"dw/ds列名"
uo_json jsmap
jsmap.set("UnitPrice","je") ,即将 json 的 UnitPrice 映射到 datawindow.je 列
第二步
ll_rows = js.dwImportJson(dw_1,jsmap)

ll_rows = js.dwImportJson(dw_1,"json3.txt",jsmap)
导入,并使用映射关系指定
两种情况下映射无效:1.动态创建DW、DS。2.datawindow里存在JSON关系字列,依然以关键字列导入。

2019/12/5
增加压缩、解压缩函数。
两组,分别基于 lzma 和 zlib

2019/12/6
修改 Get longlong double real deicmal 时不能取所有数值的BUG

2019/12/16
1.//xml 转 json
function boolean JsonFromXML(string xml) system library "PbJsonA.dll" alias for "JsonFromXML"
2.增加对PB8支持

2020/02/16 重要改进
1.增加 / 支持 ,方便存取子JSON和子数组。支持增、删除、改、查。
!!!!注意:数组序号是从 0 开始
原串:{
"name":"黑黑",
"js":{
"gh":"320124",
"bbb":12.34,
}}
执行:
js.Set("/js/app/city/0","南京")
js.Set("/js/app/city/1","北京")
js.Set("/js/app/city/2","上海")
js.Set("/js/app/city/3","广州")
js.Set("/js/app/city/4","深圳")
得到串:
{
"name":"黑黑",
"js":{
"gh":"320124",
"bbb":12.34,
"app":{
"city":[
"南京",
"北京",
"上海",
"广州",
"深圳"
]
}
}}
同理,要获取第一个数据项,可以:
js.Get("/js/app/city/0",ref ls_city)
以上方法同样支持子项!!!

2020/02/20
1.增加函数 FromSQL,根据SQL语句直接生成JSON
2.增加了一个根据主表和从表DW直接生成JSON的DEMO

2020/02/26
增加了 uo_httpclient 对象,测试版本。

2020/03/09
增加了函数 SetOption 用于设置一些选项
SetOption("rowid",true/false) 是否导出行号
SetOption("displaydata",true/false) 导出显示值还是原始值

2020/03/10
增加上传函数,支持多文件上传

2020/03/16
1.增加了加密、解密、编码函数库。
2.增加了表单提交功能函数

2020/03/19
增加FTP功能组件

2020/03/23
1.uo_json 增使用 any 型直接取键值
2.uo_json GetKeys 增加参数 ref ls_types[],将 keys 和 types 分开分别取到不同数组中
3.uo_ujson GetType 返回当前json类型
4.其他部分 uo_json 增强

2020/04/25
修复BUG:uo_json 取值时,使用进程变量取值失败

我这两天测试了下FTP发现有以下一个小BUGS:
下载方法[ ftpGet ],下载过程中如果真实情况是不成功[例如断网,文件不存在],
此方法[ ftpGet ]都会返回True而非False
而[ ftpPut ]方法则会相应的返回正确的结果[上传中途断网]

2020/04/25
增加 uo_map

2020/04/28
增加 uo_zip

2020/04/30
改进 dwExportJson 函数,导出时指定列方式,排除或者包含,并进行列名称关联,实现JSON KEY 大小写敏感,而不是全部小写

2020/05/23
1.uo_json.SetOption函数增加 "valueasstring" , true/false,是否所有DW、DS值都作为字符串导出,默认为 false
2.uo_crypto.FromTimeStamp , uo_crypto.ToTimeStamp 增对 datetime类型直接支持
3.增加函数uo_crypto.AlignKey,自动修正密钥的格式
function string AlignKey(string key,boolean opensslKey,boolean privateKey) system library "PbJson.dll" alias for "AlignKey"
4.其他已发现的小BUG

2020/5/25
增加数据连接对象(uo_database)、记录集对象(uo_recordset)、字段对象(uo_field),支持目前几乎所有关系数据库。

2020/6/2
修正 uo_zip 中文路径名问题

2020/6/12
1.增加了一个 ping 函数,提供类似操作系统 ping 命令的功能,可指定超时和 ping 次数。
2.增加 uo_hook 对象,提供 HOOK DLL API 的功能,可以完成一些特别任务。

2020/6/18
增加 uo_string 对象,提供一些远超 string 提供的功能。

2020/6/19
修改 JSON 在多线程下与DW交互的机制。

2020/6/21
增加 pdf 阅读、转图片、转文本支持

2020/7/8
增加PDF转存、放大缩小、旋转、签名等功能
#define BUTTON_PAGE_PREV     201
#define BUTTON_PAGE_NEXT     202
#define BUTTON_ZOOM_LARGE    203
#define BUTTON_ZOOM_SMALL    204
#define BUTTON_ROATE_LEFT    205
#define BUTTON_ROATE_RIGHT   206
#define BUTTON_SAVE_AS       207
#define BUTTON_PRINT         208
#define BUTTON_FIND          209
#define BUTTON_SIGN          210
#define BUTTON_ABOUT         211
在 pbjson.ini 里的 [pdfToolBar]下面,可以使用上面的定义,定义自己的工具条文本
例如
[pdfToolBar]
201=谬总需求真变态
202=谬总需求确实变态

2020/7/10
增加 sftp 客户端支持
加入datawindow鼠标拖拽功能

2020/7/13
增加了 uo_mail 对象
1.提供 SendMail 函数用于发送邮件。
2.提供 RecvMail 函数用于接收邮件,收到的邮件保存在当前目录下的 mail 目录里。

2020/7/29
1.增加 uo_wait_box 对象,提供等待时的多线程等待动态图标对话框
2.增加 uo_xml , uo_xml_node , uo_xml_attribute 对象,用于生成和解析 XML,提供 json2xml,datawindow 导入 xml 功能.
3.改进了 pdf 签名

2020/7/30
1.改进 uo_httpclient ,自动解码 application/xml 到uo_xml对象
2.对Content-Encoding:gzip 进行自动解压

2020/8/17
1.增加 uo_image 对象,可以对 bmp,jpg,png 图片做一些常规格式转换、base64解码、显示、简单特效等。
2.增加 uo_websocket_server 对象。
        !!!!!!!!!!!!!!!!特别注意,这是一个重大功能
        uo_websocket_server 对象可提供基于PB实现的 web server 和 websocket server 服务,直接可以用PB代码实现 iis + C# (JAVA,PHP) 实现的功能,直接就可以使用 pb 来写  web api.
        结合 uo_database,uo_recordset,uo_field 对象使用,效率奇高。
本功能单线程版本免费,多线程版本需要授权费用。

2020/8/19
1.PSS增加基于HTTP的布署和增量更新机制
2.增加两个程序,用于支持基于HTTP的布署和增量更新。
3.增加取硬盘序列号、CPU序列号函数

2020/8/25
修复PSS部分BUG,改进了基于HTTP的布署和增量更新,增加增量上传功能。

2020/8/27
uo_image 对象中,增加二维码和条码生成函数。生成后,可以另存为图片,或者显示到其他窗口上。

2020/8/29
1.uo_pdfview 增加多个PDF合并成一个PDF的功能
2.支持文件HTTP方式,通过 form 提交文件,默认保存在当前目录的 tmp 子目录下

2020/9/2
修正  pss 下载大文件失败

2020/9/24
增加国密标准 SM2 加密、解密,签名、验签

2020/10/24
增加 websocket 客户端
2020/10/26
增加websocket 客户端心跳断线检测
2020/11/2
改进websocket 客户端心跳断线检测,同时增加连接参数,可以在连接时进行身份识别

2020/11/17
修改 uo_json,dwimportjson 时,将第一行值为 null 的列,默认为 string 类型

2020/11/20
增加了一个 socket 客户端

2020/12/02
增加 7z 压缩支持,同时可以解压 .zip .cab ,iso
修改了 zip 解压乱码问题

2020/12/07
1.把 pbPaint功能合并进来
2.把 fchart 合并进来
3.添加了 uuid ,GetIP 函数
4.添加了 QueryVar 函数,可以自己取得调试变量信息

2020/12/09
国家医保接口需要的一个功能
增加 JAVA 的BLOB转字节序函数 BlobToByte 和 ByteToBlob
增强JSON
uo_json js
js = create uo_json
js.set("in","20201208102640.zip",js.SetBytes)
//或者 js.set("in",blob_data,js.SetBytes)
destroy js
这样可以直接把一个文件或blob数据在字节序的形式放进JSON。

2020/12/10
修复一个PSS取base64参数的BUG

2021/1/25
1.提供全局选项,将deExportJson 导出的  NULL指定为  ""
2.uo_image 增加 GetSize 函数。
3.修复个别偶发性小BUG。


2021/7/14
1.修改了若干BUG
2.在多线程环境下运行得到有效支持
3.提供国家医保相关技术支持

2021/8/16
1.增加了 dbf 导出与导入为 json 功能
2.增加  asn1 编码解码功能
3.增加 redis 客户端功能

2021/9/7
增加了基于 libcurl的 httpclient 对象 uo_curl ,可以支持 tls1.3,摆脱原来 uo_httpclient 受操作系统限制,导致win7不能访问某些服务的问题。

2021/9/10
修复一个国家医保接口BUG:上传大文件时,有一定可能导致内存越界,程序崩溃。

2021/9/16
1.增加了 uo_curl 异步下载支持
2.增加了 JWT 分发token和验签对象 uo_jwt
3.增加了大文本文件导入DW,兼容 ansi,utf8,unicode 各种编码,不用转换

2021/9/23
1.uo_json set 函数,可以接受 date,time datetime 类型参数
2.uo_json get 增加了根据索引取 键值对
3.uo_json 增加了一个遍历示例。一直以来许多人不知道如何遍历 uo_json
4.修复了 utf8 编码检测的一个BUG。
5.修复 uo_httpclient.response.timeout 取不到设置值的问题
6.excel操作已升级到 libxl 4.0.0.0

2021/9/28
1.增加一组函数:简繁体互转、取拼音首字母、全角半角互转、金额大写、比较字符串相似度
2.修改了uo_xml一个按名称取节点属性会闪退的 BUG
3.websocket 服务端和客户端,增加了发送消息类型参数,可以指定发blob和string消息
4.修复了内部一个 pkcs7 对齐的BUG。

2021/10/11
1.增加了 kafka 生产者客户端功能
2.增加了 kafka 消费者订阅客户端功能
3。uo_json 增加 ToText 函数,用于生成格式化文本内容。

2021/10/14
1.uo_json 增加 GetString GetDobule GetLong GetLongLong 函数
2.修改了医保接口函数 YiBao_Request 自动进行 SM4解密的一个BUG。

2021/10/15
1.增加取拼音首字母汉字量,由原来 GB2312扩展到GBK计2W多汉字。
2.改进了 dwImportFile 函数,该函数导入大医院下载的txt文件。增加了2个参数:
boolean removeNull,对 null 这样的字段替换为空
boolean autoTrunc,对超出字段长度的文本,直接进行截断处理,避免导入字段内容长于dw定义长度,导致报错。
3.
//根据指定标志,指定长度,取一个序号.本函数功能主要是在服务端,提供一个乱序,但不重复的单据号
function string GetRandSerial(string flag,int numLen) system library "PbIdea.dll" alias for "stringGetRandSerial"

2021/10/29
修复了几个BUG

2021/10/31
1.uo_pdfview printf 函数增加打印到指定打印机参数
2.增加列举打印机函数,可查询所有已安装打印机,及打印机实时状态

2021/11/10
增加语法高亮、折叠块、行号控件

2021/11/16
1.增加ReadObjectNames和ReadObjectContent两个函数,读取PBL PBD(也可以是PB编译的DLL,EXE) 里面的对象内容,包括资源文件。
2.uo_json 增加 WriteJsonFile 字符编码参数,可以把JSON存为 utf8,ansi,unicode(utf16)三种类型的文件
2021/11/17
1.uo_painter,uo_image,uo_json.parsefile 可以直接使用内置资源
2021/11/24
uo_httpclient uo_curl 两个对象,给 SetParam SetHeader 函数增加了 uo_map 类型参数
作用:
需要对类似 a=aa&b=bb&c=cc 这样的参数排序并签名时非常有用
uo_map m;m = create uo_map
m.set("c","cc");m.set("b","bb");m.set("a","aa"); //会自动排序
ls_text = m.join("&") //join后得到字符串 "a=aa&b=bb&c=cc" ,然后根据文档要求对这个字符串进行签名
httpclient.setParam(m) or curl.setParam(m) 把参数添加到对象
这样使用方便

2021/12/12
1.修改大文件导入的一个bug
2.添加函数ReadResourceList,可以解析PBL源码中引用的文件,形成一个字符串列表,方便生成 .pbr 文件。文件大于2M不添加到列表,uo_utils基于此添加了makepbr函数
3.增加 uo_tranicon对象,方便任务栏图标和弹出菜单应用

2021/12/17
1.增加打印机自定义纸张功能
2021/12/18
1.增加对gif格式支持
2.添加表达式计算,以及一个计算器控件
2021/12/21
增加socket client 异步支持
共享共进共赢Sharing And Win-win Results
ehxz 楼主

主题

0

回帖

57万

积分

管理员

积分
570724
贡献
在线时间
小时
2021-12-21 14:10:14 | 显示全部楼层
占位
共享共进共赢Sharing And Win-win Results
robert99

主题

0

回帖

659

积分

高级会员

积分
659
贡献
在线时间
小时
2021-12-21 14:12:52 | 显示全部楼层
祝贺
共享共进共赢Sharing And Win-win Results
aloneinchina

主题

0

回帖

1万

积分

论坛元老

积分
15138
贡献
在线时间
小时
2021-12-21 14:22:49 | 显示全部楼层
共享共进共赢Sharing And Win-win Results
qin_phoenix

主题

0

回帖

786

积分

高级会员

积分
786
贡献
在线时间
小时
2021-12-21 14:36:33 | 显示全部楼层
共享共进共赢Sharing And Win-win Results
叫兽兽

主题

0

回帖

1256

积分

金牌会员

积分
1256
贡献
在线时间
小时
2022-1-4 17:23:25 | 显示全部楼层
是什么让大家聚到了一起
原来是医保
共享共进共赢Sharing And Win-win Results
lifei1210

主题

0

回帖

478

积分

中级会员

积分
478
贡献
在线时间
小时
2022-1-15 20:39:07 | 显示全部楼层
知道自己要从事一段时间的PB实施类工作,苦于找不到系统的学校资料,这几天接触到的真心不错,没想到还有大神如此厉害,受教了。
共享共进共赢Sharing And Win-win Results
pbfans123

主题

0

回帖

341

积分

中级会员

积分
341
贡献
在线时间
小时
2023-1-6 20:50:43 | 显示全部楼层
好东西感谢分享
共享共进共赢Sharing And Win-win Results
您需要登录后才可以回帖 登录 | 站点注册

本版积分规则

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

Mail To:Admin@SybaseBbs.com

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

GMT+8, 2024-4-25 22:53 , Processed in 0.072165 second(s), 9 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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