容错问题

flyindirty2008 2005-12-08 01:58:32
我写了一个程序文本转换的
要转换的文本是这样的
40754 00203 10000 21423=40:1:31:11:01:00
40754 00203 11:01:00=
45667 01414 10000 26554 31401 40701 56652 60101 70101 86752=
23443 00106 10000 26203 30601 40000 56404 60101 70000 86452=
我写的程序只能转换类似
45667 01414 10000 26554 31401 40701 56652 60101 70101 86752=
这样的行(也就是这样的内容有用)

我想让程序在读到类似这样的行
40754 00203 10000 21423=40:1:31:11:01:00
时不做转换处理忽略掉,读下面有用的行去,请问怎么做?
...全文
72 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyindirty2008 2005-12-09
  • 打赏
  • 举报
回复
谢谢各位大虾,我已知道怎么做了
roger_xiong 2005-12-08
  • 打赏
  • 举报
回复
呵呵,大家都说完了,我来总结好了:

Dim strTemp As String

Open "c:\test.log" For Input As #1
Do Until EOF(1)
Line Input #1, strTemp
If InStr(1, strTemp, ":") > 0 Then '如果含":"的数据将不被处理
Debug.Print "不需要的数据:" & strTemp
Else
Debug.Print strTemp
End If
Loop
Close #1
Summer006 2005-12-08
  • 打赏
  • 举报
回复
你举的例子中看出,出错的当中都有“:”,那就以此为特征来判断好了
if instr(s,":")=0 then
'正常处理
end if
of123 2005-12-08
  • 打赏
  • 举报
回复
方法无非两种:
1 事先判断,实现程序分支来处理。
2 拦截错误,在错误处理例程中处理。这一般是在事先判断比较困难的情况下。

问题是,你判断的标准是什么?如果是格式的话(例如空格分隔的字段数):

Dim strLine As String
Dim tmp() As String

open "test.txt" for input as #1
do until eof(1)
line input #1, strLine
tmp = Split(strLine, "")
If Ubound(tmp) = 9 Then
'你的转换代码
End If
loop
clear_zero 2005-12-08
  • 打赏
  • 举报
回复
我想你知道读文本的方式,下面就是判断的事情了
读文本的方式用filesystemobject就好了

1。sstring=ostream.readling读一行
2。判断,具体要看你对于40754 00203 10000 21423=40:1:31:11:01:00的相似度取多高了
instr这个函数可以帮助你判断= : 这样的。如果字符串里面有这样的符号就什么也不做
循环读下一行

也不知道我理解对了没有,希望有所帮助

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧