搜索
bottom↓
回复: 16

请教下,有谁知道VB split() 的用法?

[复制链接]

出0入14汤圆

发表于 2015-12-28 18:38:32 | 显示全部楼层 |阅读模式
目前开发环境  VB6.8

问题:怎么确定 split 的返回值 和 下标溢出??

例如:

正常数据
00000000  00 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)就会溢出


这些要怎么处理?、

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入70汤圆

发表于 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) 最大值 即分割符号, 最大的数组值

出0入0汤圆

发表于 2015-12-28 20:49:54 | 显示全部楼层
楼上正解

出0入0汤圆

发表于 2015-12-28 22:41:10 | 显示全部楼层
也可以这样:
if UBound(StrLineA) <10 then 异常处理
上面已经包含了为空行的异常判断

出5入14汤圆

发表于 2015-12-29 08:38:04 | 显示全部楼层
VB6.8 ?怎么没听说过这个版本?

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

出0入14汤圆

 楼主| 发表于 2015-12-29 09:21:05 | 显示全部楼层
EMC菜鸟 发表于 2015-12-29 08:38
VB6.8 ?怎么没听说过这个版本?

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

打错了,是6.0

出0入14汤圆

 楼主| 发表于 2015-12-29 09:48:18 | 显示全部楼层
SkyGz 发表于 2015-12-28 18:47
if trim$(linedataA)="" then  先过滤前后空格,  如果无数据 判断为空,  即空行

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

谢谢,这样可以了

出110入93汤圆

发表于 2015-12-29 10:44:54 | 显示全部楼层
VB6 不知道支持正则表达式不,不然用正则表达式也是不错的选择,可能要加 regexp 组件吧。

出5入14汤圆

发表于 2015-12-29 10:57:49 | 显示全部楼层

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

出0入0汤圆

发表于 2015-12-29 11:08:13 | 显示全部楼层
先要去掉空格的,二楼的是对的

出0入14汤圆

 楼主| 发表于 2015-12-29 11:52:15 | 显示全部楼层
SkyGz 发表于 2015-12-28 18:47
if trim$(linedataA)="" then  先过滤前后空格,  如果无数据 判断为空,  即空行

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

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

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

出0入14汤圆

 楼主| 发表于 2015-12-29 11:53:11 | 显示全部楼层
EMC菜鸟 发表于 2015-12-29 10:57
该换了,现在不换,迟早还是要换的 ......

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

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

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

出5入14汤圆

发表于 2015-12-29 13:02:37 | 显示全部楼层
isakura 发表于 2015-12-29 11:53
能用就行,我不知专职这个的,只是用来做个小工具

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

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

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

出0入0汤圆

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

试试 ...

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

出0入0汤圆

发表于 2015-12-29 17:37:26 | 显示全部楼层
做小工具感觉VB6很合适,看着.NET那好几个G的臃肿身材就没兴趣用了,2005到2010期间曾从VB6转向.net,现在又转回VB6了

出5入14汤圆

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

出0入0汤圆

发表于 2015-12-31 08:20:35 | 显示全部楼层


对比过更好的语言后,会发觉vb6 确实有很多不好的地方。。。。。。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-16 08:56

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表