我定义了两个string类型的变量,从数据库里提出数据到这两个变量,为什么我提的数据是一样的,但是是从不同的表里提的,比较之后发现返回不相等 dim dan_1(10) as string dim dan_2(10) as string 'string类型的数组 。。。。。。 。。。。。。 。。。。。。 msgbox(dan_1(0)) msgbox(dan_2(0)) ‘显示两变量是都是“b”
if equals(trim(dan_1(0)), trim(dan_2(0))) then fenshu = fenshu + 2 end if msgbox(fenshu) 得到的fenshu值为0
用stripnulls instead of trim: private function stripnulls(byval sstring as string) as string
dim lpos as long
lpos = instr(sstring, vbnullchar)
if (lpos = 1) then stripnulls = vbnullstring elseif (lpos > 1) then stripnulls = left$(sstring, lpos - 1) exit function end if
stripnulls = sstring
end function
发表于:2007-06-12 16:40:185楼 得分:0
dan_1(10)和dan_1(10)分配的字符空间不同吧?
发表于:2007-06-12 17:21:446楼 得分:0
感觉4楼大哥的说得很有道理,看了你的代码让我受益非浅,但是我也试过了你的代码,得出来的结果好像还是不对, 我跟踪了一下程序,在比较时 如: if stripnulls(dan_1(0))=stripnulls(dan_2(0)) 并没有进入到函数 private function stripnulls(byval sstring as string) as string 的if..else语句里面,好像还是有点问题
stripnulls我用了多年。绝对没问题。 trim(dan_2(0).length返回值是3,里面可能有2个vbnullchar 再试试下面的: public function stripsinglenull(byval strin as string) as string dim nul as long nul = instr(strin, vbnullchar) select case nul case is > 1 stripsinglenull= left$(strin, nul - 1) case 1 stripsinglenull= " " case 0 stripsinglenull= trim$(strin) end select end function
public function stripdblnull(byval strin as string) as string dim nul as long nul = instr(strin, vbnullchar & vbnullchar) select case nul case is > 1 stripdblnull = left$(strin, nul - 1) case 1 stripdblnull = " " case 0 stripdblnull = trim$(strin) end select end function