当前位置: 代码迷 >> PB >> 结构体(structure)跟数组(array)怎样置空
  详细解决方案

结构体(structure)跟数组(array)怎样置空

热度:111   发布时间:2016-04-29 06:01:19.0
结构体(structure)和数组(array)怎样置空?
setnull不能用在结构体和数组上,但我想让声明的结构体,数组为空应该怎么办啊?
------解决方案--------------------
再申明一个结构体或者数组将它附值给原来的结构体或者数组
------解决方案--------------------
string ls_data[], ls_null[]

ls_data[1] = 'sdfsdfs'
ls_data[2] = 'sdfksjdflkds'

//如果想把ls_data赋为空

ls_data = ls_null

即可
------解决方案--------------------
s_yourstruct lst_my[]
any lany
lany = lst_my
SetNull(lany)
lst_my = lany

------解决方案--------------------
pb6.5 中使用 SetNull(any) 会导致内存泄漏,其它版本不知道,所以对 any 类型变量的置空操作还是尽量避免的好!
------解决方案--------------------
VARIANT是基于com技术的automatic发展起来的。
而pb的any很像
1,当一个any没有初使化,那么它是一个无类型。所以直接对一个无类型setnull是会出错的。
2,pb的数组也是不能够setnull的


s_yourstruct lst_my[]
any lany
lany = lst_my
SetNull(lany)
lst_my = lany

上面的代码,即然把any初使化成一个array,那么必然不可以再setnull了

------解决方案--------------------
我想any应该是一个被封装了的VARIANT
------解决方案--------------------
引用:
首先any类型是可以用setnull的(至少在PB里是不报错的)
184270428,你的意思是说PB目前是没办法让结构体置空、数组置空(或者说没办法让isnull(结构体)、isnull(数组)的值为true),是吗?


你看清我的话,再做回答!

any如果被初使化成一个非数组类型,当然可以setnull

s_yourstruct lst_my[]
any lany
lany = lst_my//这里把any初使化成了一个数组,所以后面的setnull不成功。
SetNull(lany)
lst_my = lany


------解决方案--------------------
数组时话,只能这样做:

type a[],a_null[]

a[1] = 0
a    = a_null

------解决方案--------------------
“丢失”的内存是没有办法找回的,唯一的办法就是避免泄漏!
要清空数据,我觉得还是按 pcwe2002 的方法比较稳妥,如果你是想通过置结构体为空来做是否有效的判断,我建议给结构体加一个“是否有效”的标志项,以此项值做为该结构体是否可用的标准。
  相关解决方案