isakura 发表于 2015-12-28 18:38:32

请教下,有谁知道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:47:11

本帖最后由 SkyGz 于 2015-12-28 18:55 编辑

if trim$(linedataA)="" then先过滤前后空格,如果无数据 判断为空,即空行

先处理异常, ,    if Instr(LineDataA, " ") >0 then再判断整串数据是否有空格, 用Instr判断>0 则有空格, 那么再用Split进行分割数组,   出来的数组才不会越界出错

LBound(StrLineA)最小值 一般是0   UBound(StrLineA) 最大值 即分割符号, 最大的数组值

AllEle 发表于 2015-12-28 20:49:54

楼上正解

modbus 发表于 2015-12-28 22:41:10

也可以这样:
if UBound(StrLineA) <10 then 异常处理
上面已经包含了为空行的异常判断

EMC菜鸟 发表于 2015-12-29 08:38:04

VB6.8 ?怎么没听说过这个版本?

原来用 VB6.0,现在不得不改到 VB.NET 上了!

isakura 发表于 2015-12-29 09:21:05

EMC菜鸟 发表于 2015-12-29 08:38
VB6.8 ?怎么没听说过这个版本?

原来用 VB6.0,现在不得不改到 VB.NET 上了! ...

打错了,是6.0

isakura 发表于 2015-12-29 09:48:18

SkyGz 发表于 2015-12-28 18:47
if trim$(linedataA)="" then先过滤前后空格,如果无数据 判断为空,即空行

先处理异常, ,    if Inst ...

谢谢,这样可以了

memstone 发表于 2015-12-29 10:44:54

VB6 不知道支持正则表达式不,不然用正则表达式也是不错的选择,可能要加 regexp 组件吧。

EMC菜鸟 发表于 2015-12-29 10:57:49

isakura 发表于 2015-12-29 09:21
打错了,是6.0

该换了,现在不换,迟早还是要换的 ......

socoolcool 发表于 2015-12-29 11:08:13

先要去掉空格的,二楼的是对的

isakura 发表于 2015-12-29 11:52:15

SkyGz 发表于 2015-12-28 18:47
if trim$(linedataA)="" then先过滤前后空格,如果无数据 判断为空,即空行

先处理异常, ,    if Inst ...

请问下,哪一个函数可以把字符串转换为 数值?

例如“1A3C”转换出来是 0x1A3C

isakura 发表于 2015-12-29 11:53:11

EMC菜鸟 发表于 2015-12-29 10:57
该换了,现在不换,迟早还是要换的 ......

能用就行,我不知专职这个的,只是用来做个小工具

请问下,哪一个函数可以把字符串转换为 数值?

例如“1A3C”转换出来是 0x1A3C

EMC菜鸟 发表于 2015-12-29 13:02:37

isakura 发表于 2015-12-29 11:53
能用就行,我不知专职这个的,只是用来做个小工具

请问下,哪一个函数可以把字符串转换为 数值?


都是用来做做小工具的,正经编程的貌似很少用 VB ,因为新系统已经不支持了,都是无可赖何才换的!

试试把“1A3C”前面加个 “&H”,然后用 Val() !

modbus 发表于 2015-12-29 17:32:41

EMC菜鸟 发表于 2015-12-29 13:02
都是用来做做小工具的,正经编程的貌似很少用 VB ,因为新系统已经不支持了,都是无可赖何才换的!

试试 ...

新系统一直都支持,我在64位WIN10中还一直在用,并且VB6在WIN10中速度飞快,感觉跟优化过似的

modbus 发表于 2015-12-29 17:37:26

做小工具感觉VB6很合适,看着.NET那好几个G的臃肿身材就没兴趣用了,2005到2010期间曾从VB6转向.net,现在又转回VB6了

EMC菜鸟 发表于 2015-12-30 10:35:13

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 容易多了 ......

devcang 发表于 2015-12-31 08:20:35



对比过更好的语言后,会发觉vb6 确实有很多不好的地方。。。。。。
页: [1]
查看完整版本: 请教下,有谁知道VB split() 的用法?