这个算blobedit的坑吗

jyglint 2017-10-21 10:23:57

//====================================================================
// 函数: printer::write
//--------------------------------------------------------------------
// 描述:
//--------------------------------------------------------------------
// 参数:
// value character variable[]
//--------------------------------------------------------------------
// 返回值: integer
//--------------------------------------------------------------------
// 作者: test 日期: 2017.10.21
//--------------------------------------------------------------------
// 修改历史:
//
//====================================================================

blob lb
int ll,li

ll=UpperBound(variable)
//BlobEdit插入一个string或者char值后,会自动追加一个char(0)作为字符串结束标记
//如果string已char(0)结尾或者值本身是char(0),则不再追加
//所以总长度要加一,否则最后一个字符无法插入
//此怪异行为在处理中文或unicode时更需要注意
lb = blob(space(ll+1))

for li=1 to ll
BlobEdit(lb, li, variable[li]) //函数执行返回值的设计也很怪异
next
//此时lb中最后一位是char(0)或空格,去除掉
lb = blobmid(lb,1,ll)
return fileWrite(this.fileHandle, lb)
...全文
465 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
WorldMobile 2017-10-25
  • 打赏
  • 举报
回复
如果真像楼主写的这样,肯定是坑,不注意就掉进去了,有空我去试试,很少用blobedit,都是直接加,如 lb_data = lb_data + blob("ok")

397

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 非技术版
社区管理员
  • 非技术版社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧