Blob数据类型的使用

Blob数据类型的使用Blob 数据类型的使用 nbsp nbsp nbsp blob 200 nbsp nbsp bl var nbsp nbsp nbsp nbsp nbsp nbsp 定义一个初始大小为 200 字节 blob nbsp nbsp nbsp blob nbsp nbsp bl var nbsp nbsp nbsp nbsp nbsp nbsp 普通定义方法 零长度 blob nbsp nbsp nbsp bl var nbsp nbsp nbsp nbsp Blob Space 200 nbsp nbsp nbsp nbsp nbsp nbsp 动态分配 200 个字节 实际上是分配了一个 200 字符的字符串 全部为空格 ASCII 码 20H 最后转换

Blob数据类型的使用:  
  blob{200}   bl_var     //   定义一个初始大小为200字节blob  
  blob   bl_var     //   普通定义方法,零长度blob  
  bl_var   =   Blob(Space(200))     //   动态分配200个字节,实际上是分配了一个200字符的字符串,全部为空格(ASCII码20H),最后转换为blob。也就是开辟了一个200字节的内存区,内容都是20H,而不是00H。全部初始化为全零的变通方法:(DX有更直接方法吗?)  
  blob   bl_var  
  bl_var   =   Blob(Space(200))  
  for   i   =   1   to   Len(bl_var)  
      BlobEdit(bl_var,   i,   Char(0))  
  next  
  //   BlobEdit()用于修改一个blob变量指定位置的值,修改值可以是任何类型(转换到blob字节)。  
  但是有个奇特的地方,PB会把char看作string,当写入了一个非零的字符(char)时,字符串以零字符结束,因此实际上修改了blob变量的两个字节(一个是字符本身,一个是零字节),解决方法是Blob(some_char),因为用Blob来转换字符串时,只有有效字符被转换,结尾的零字符会被忽略。而Blob(Char(0))将会返回一个空值,因为PB把char(0)作为零长度的字符串处理。  
  当修改值超出blob变量的范围时,该次修改将不起作用!  
   
  //   对blob变量作逐字节处理的方法:  
  //   bl_source已经初始化,i是要处理的字节位置  
  blob{1}   bl_byte     //   声明单字节长度的blob  
  int   li_byte  
  bl_byte   =   BlobMid   (bl_source,   i,   1)     //   Extract   a   byte  
  li_byte   =   Asc(String(bl_byte))     //   转换到整型  
  …   //   对li_byte的值作任意处理,处于0-255单字节取值范围内  
  //   字节内容处理后再放回去  
  if   li_byte   =   0   then  
      BlobEdit(bl_source,   i,   Char(0))     //   写入00H  
  else  
      BlobEdit(bl_source,   i,   Blob(Char(li_byte)))  
  end   if  
    

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/220908.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午7:22
下一篇 2026年3月17日 下午7:23


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号