Blob数据类型的使用

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  
    

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值