操作文件的问题
在一文本文件中有如下内容,
rrT0Q* a:15321 53284 #b:45729 33452 #c:AVAIL TIME #END
现在我需要截取前面"rrT0Q* " 和后面"end"部份
然后将 "a:15321 53284 #b:45729 33452 #c:AVAIL TIME" 这段字符输入到程序中text1.text中。并且这部份内容的字符不定长,且在#时text1.text需要换行。
请教高手如何读取这段字符?
问题点数:50、回复次数:30Top
1 楼sudeping_ok()回复于 2006-07-03 16:07:19 得分 0
也就是说在text1.text文本框中显示内容如下:
a:15321 53284
b:45729 33452
c:AVAIL TIME
#处换行,且不显示#Top
2 楼aspower_(敬个礼 握个手 大家都素好朋友!)回复于 2006-07-03 16:10:46 得分 0
简单
split
我去写写看Top
3 楼aspower_(敬个礼 握个手 大家都素好朋友!)回复于 2006-07-03 16:20:10 得分 0
搞定
Private Function GetKey(HTML, Start, Last, i)
On Error Resume Next
filearray = Split(HTML, Start)
filearray2 = Split(filearray(i), Last)
GetKey = filearray2(0)
End Function
Private Sub Command1_Click()
Dim s() As String
Str1 = "rrT0Q* a:15321 53284 #b:45729 33452 #c:AVAIL TIME #END"
Str1 = GetKey(Str1, "rrT0Q*", "#END", 1)
s() = Split(Str1, "#")
For i = 0 To 2
Text1.Text = Text1.Text & vbCrLf & s(i)
Next
End SubTop
4 楼sudeping_ok()回复于 2006-07-03 16:32:49 得分 0
Str1 = "rrT0Q* a:15321 53284 #b:45729 33452 #c:AVAIL TIME #END"
中a:15321 53284 #b:45729 33452 #c:AVAIL TIME 这段字符随时都可能产生变化,且长度也有可能变化。
例如
a:427432 53284 #b:45729 3324552 #c:AVAIL ABCDEF
只有头和尾的字符及字符长度不变Top
5 楼aspower_(敬个礼 握个手 大家都素好朋友!)回复于 2006-07-03 16:36:30 得分 0
我的代码就可以
spilt根据#这个符号来分割的
你试下就知道了
Str1你自己传递给他比如 str1=text2.text
我那里只是做个演示
你要还是不明白我也每办法了Top
6 楼aspower_(敬个礼 握个手 大家都素好朋友!)回复于 2006-07-03 16:47:49 得分 0
成功记得给分Top
7 楼sudeping_ok()回复于 2006-07-03 16:51:19 得分 0
你的代码基本明白,就是如何将例如:c:\1.txt的全部文本内容赋值给变量str1?Top
8 楼aspower_(敬个礼 握个手 大家都素好朋友!)回复于 2006-07-03 16:59:50 得分 0
哇靠
你你你
你也太烂了吧
open "c:\1.txt" for input as #1
input #1,str1
close #1Top
9 楼aspower_(敬个礼 握个手 大家都素好朋友!)回复于 2006-07-03 17:00:08 得分 0
弄点分也真不容易阿Top
10 楼vansoft(Vansoft Workroom)回复于 2006-07-03 17:08:24 得分 0
簡單.
用richtextbox控件,一次加載文件.
然後用replace方法,
把rrT0Q*和#END替換為空,
再把#替換為vbcrlf,
最後保存一下就行。Top
11 楼aspower_(敬个礼 握个手 大家都素好朋友!)回复于 2006-07-03 17:10:00 得分 0
楼上方法也8错Top
12 楼verywzm(寒江雪)回复于 2006-07-03 18:21:04 得分 0
Private Sub Command1_Click()
Dim a() As String
Dim str As String
str = "rrT0Q* a:15321 53284 #b:45729 33452 #c:AVAIL TIME #END"
a() = Split(str, "#")
Text1.SelText = Right(a(0), Len(a(0)) - 7) & vbCrLf
For i = 1 To UBound(a) - 1
Text1.SelText = a(i) & vbCrLf '显示数据。
Next
End Sub
Top
13 楼aspower_(敬个礼 握个手 大家都素好朋友!)回复于 2006-07-03 18:33:58 得分 0
楼上每把这个给去调rrT0Q*Top
14 楼sudeping_ok()回复于 2006-07-03 19:51:33 得分 0
不知道input是个什么东东?Top
15 楼sudeping_ok()回复于 2006-07-03 19:52:08 得分 0
vb是个什么意思啊?Top
16 楼aspower_(敬个礼 握个手 大家都素好朋友!)回复于 2006-07-03 20:03:53 得分 0
...
那个是读取文件的
表示用于读取 如果是写入就是output 追加是appendTop
17 楼sudeping_ok()回复于 2006-07-03 21:09:43 得分 0
哈哈Top
18 楼sudeping_ok()回复于 2006-07-04 11:46:15 得分 0
open "c:\1.txt" for input as #1
input #1,str1
close #1
只能读取文本中第一行数据,我的目的是要将整个文件内的数据全部写入到变量str1中。
而且这个文件中的数据大约有7-10行。Top
19 楼sudeping_ok()回复于 2006-07-04 12:03:11 得分 0
如果用
str1 = input(350,#1)
的方法来取字符,但是该文件不定长度,所以有时在text1文本中无法将文件中的内容显示完整。Top
20 楼aspower_(敬个礼 握个手 大家都素好朋友!)回复于 2006-07-04 12:16:49 得分 0
input #1,str1
怎么是读取一行
读取一行是
line input阿Top
21 楼sudeping_ok()回复于 2006-07-04 12:31:20 得分 0
这个文件是下载下来的,其中的字符很奇怪,包含了诸如逗号,回车符等。而且文件还不定长,我用
open "c:\1.txt" for input as #1
input #1,str1
close #1
试了下,在第一行回车符处就不再显示后面的了。用
str1 = input(350,#1)
方法也试了,到是能取到350个字符,但该文件不定长,有时文件字符超过350时,显示在文本的内容就不完整了。
aspower大哥能否加我QQ:17015551,我把该文件发给你帮我看一下,问题出在那了?Top
22 楼verywzm(寒江雪)回复于 2006-07-04 12:33:15 得分 30
Private Sub Command1_Click()
Dim MyChar As String
Dim Str As String
Open "c:\1.txt" For Input As #1 ' 打开文件。
Do While Not EOF(1) ' 循环至文件尾。
Input #1, MyChar ' 读入一行
Str = Str & MyChar
Loop
Close #1 ' 关闭文件。
Text1.Text = Str
End SubTop
23 楼verywzm(寒江雪)回复于 2006-07-04 12:36:57 得分 0
测试了,单用input确实读不完,我上面的可以读完。Top
24 楼sudeping_ok()回复于 2006-07-04 13:07:46 得分 0
Do While Not EOF(1) ' 循环至文件尾。
好注意,高!
最后请教个问题,就是我如果要从文件的第五个字符开始取值到文件尾。怎么办?
搞定结帖了.Top
25 楼sudeping_ok()回复于 2006-07-04 15:45:29 得分 0
谁有好办法Top
26 楼aspower_(敬个礼 握个手 大家都素好朋友!)回复于 2006-07-04 15:57:30 得分 20
input 5,#1
空操作一下指针就过去了 也可以用get但是比较麻烦
Private Sub Command1_Click()
Dim MyChar As String
Dim Str As String
Open "c:\1.txt" For Input As #1 ' 打开文件。
input 5,#1
Do While Not EOF(1) ' 循环至文件尾。
Input #1, MyChar ' 读入一行
Str = Str & MyChar
Loop
Close #1 ' 关闭文件。
Text1.Text = Str
End Sub
Top
27 楼verywzm(寒江雪)回复于 2006-07-04 16:15:52 得分 0
用seek函数
Private Sub Command1_Click()
Dim MyChar As String
Dim Str As String
Open "c:\1.txt" For Input As #1 ' 打开文件。
Seek #1, 5
Do While Not EOF(1) ' 循环至文件尾。
Input #1, MyChar ' 读入一行
Str = Str & MyChar
Loop
Close #1 ' 关闭文件。
Text1.Text = Str
End SubTop
28 楼aspower_(敬个礼 握个手 大家都素好朋友!)回复于 2006-07-04 16:28:00 得分 0
楼上的可以
我的代码有错呵呵 又是想当然没调试
Private Sub Command1_Click()
Dim MyChar As String
Dim Str As String
Open "c:\1.txt" For Input As #1 ' 打开文件。
str1 = Input(5, #1)'空操作一下 需要注意的是这里的字符数是指真正的字符位数回车换行都要计算在内的
Do While Not EOF(1) ' 循环至文件尾。
Input #1, MyChar ' 读入一行
Str = Str & MyChar
Loop
Close #1 ' 关闭文件。
Text1.Text = Str
End Sub
这个代码调试过了应该没有问题了Top
29 楼verywzm(寒江雪)回复于 2006-07-04 16:29:54 得分 0
seek函数是移动文件指针的函数,好了可以结贴了Top
30 楼aspower_(敬个礼 握个手 大家都素好朋友!)回复于 2006-07-04 16:35:27 得分 0
get也可以
呵呵
get #1,5,变量名
get从指定位置开始读取长度等于变量长度的数据并存放在变量中Top




