请教下,有谁知道VB split() 的用法?
目前开发环境VB6.8问题:怎么确定 split 的返回值 和 下标溢出??
例如:
正常数据
0000000000 00 00 03 C0 04 00 00 - FE 04 03 00 00 00 00 00 ....?..?......
处理:
StrLineA = Split(LineDataA, " ")
当正常数据时我可以处理,但是当 LineDataA 为异常时就不知道怎么办了
LineDataA 是读取的一个txt文件的一行数据,
我是用 len(”00000000“)=8 和 StrLineA(10)=“-”来判断为正常数据的,
If Len(StrLineA(0)) = 8 Then '判断是否合格的数据
If StrLineA(10) = "-" Then
那么当 LineDataA为换行的空行,StrLineA(0) 的值为什么, Len(StrLineA(0)) 这个会报错
或者没有空格那些,或者是只分成了1,2个字符串,StrLineA(10)就会溢出
这些要怎么处理?、 本帖最后由 SkyGz 于 2015-12-28 18:55 编辑
if trim$(linedataA)="" then先过滤前后空格,如果无数据 判断为空,即空行
先处理异常, , if Instr(LineDataA, " ") >0 then再判断整串数据是否有空格, 用Instr判断>0 则有空格, 那么再用Split进行分割数组, 出来的数组才不会越界出错
LBound(StrLineA)最小值 一般是0 UBound(StrLineA) 最大值 即分割符号, 最大的数组值
楼上正解 也可以这样:
if UBound(StrLineA) <10 then 异常处理
上面已经包含了为空行的异常判断 VB6.8 ?怎么没听说过这个版本?
原来用 VB6.0,现在不得不改到 VB.NET 上了! EMC菜鸟 发表于 2015-12-29 08:38
VB6.8 ?怎么没听说过这个版本?
原来用 VB6.0,现在不得不改到 VB.NET 上了! ...
打错了,是6.0 SkyGz 发表于 2015-12-28 18:47
if trim$(linedataA)="" then先过滤前后空格,如果无数据 判断为空,即空行
先处理异常, , if Inst ...
谢谢,这样可以了 VB6 不知道支持正则表达式不,不然用正则表达式也是不错的选择,可能要加 regexp 组件吧。 isakura 发表于 2015-12-29 09:21
打错了,是6.0
该换了,现在不换,迟早还是要换的 ...... 先要去掉空格的,二楼的是对的 SkyGz 发表于 2015-12-28 18:47
if trim$(linedataA)="" then先过滤前后空格,如果无数据 判断为空,即空行
先处理异常, , if Inst ...
请问下,哪一个函数可以把字符串转换为 数值?
例如“1A3C”转换出来是 0x1A3C EMC菜鸟 发表于 2015-12-29 10:57
该换了,现在不换,迟早还是要换的 ......
能用就行,我不知专职这个的,只是用来做个小工具
请问下,哪一个函数可以把字符串转换为 数值?
例如“1A3C”转换出来是 0x1A3C isakura 发表于 2015-12-29 11:53
能用就行,我不知专职这个的,只是用来做个小工具
请问下,哪一个函数可以把字符串转换为 数值?
都是用来做做小工具的,正经编程的貌似很少用 VB ,因为新系统已经不支持了,都是无可赖何才换的!
试试把“1A3C”前面加个 “&H”,然后用 Val() ! EMC菜鸟 发表于 2015-12-29 13:02
都是用来做做小工具的,正经编程的貌似很少用 VB ,因为新系统已经不支持了,都是无可赖何才换的!
试试 ...
新系统一直都支持,我在64位WIN10中还一直在用,并且VB6在WIN10中速度飞快,感觉跟优化过似的 做小工具感觉VB6很合适,看着.NET那好几个G的臃肿身材就没兴趣用了,2005到2010期间曾从VB6转向.net,现在又转回VB6了 modbus 发表于 2015-12-29 17:37
做小工具感觉VB6很合适,看着.NET那好几个G的臃肿身材就没兴趣用了,2005到2010期间曾从VB6转向.net,现在 ...
该转还是得转的,系统不可能一直支持的,我也想一直用 PROTELL 和 VB6.0,但今年还是很痛苦、但坚决的转到了 AD09 和 VB.NET !
不过话说回来,从 VB6.0 转到 VB.NET ,比从 PROTELL 转到 AD09 容易多了 ......
对比过更好的语言后,会发觉vb6 确实有很多不好的地方。。。。。。
页:
[1]