当前位置:编程学习 > VB >>

[高分请教]vb读取文本的问题

一个未知多少行的文本txt。要求先对该文本进行判断有多少行,然后随机读出10行内容,在txt中显示出来。请教高手这个怎么写啊?
答案:两种方法,一种把它全部读入一个字符串s
然后hang=split(s,vbcrlf)
hang(0)就是第一行…………最后一行就是hang(ubound(hang)),共有ubound(hang)+1行。
然后随机产生下标,就可以了。
我要出去了,没有时间写代码。你自己先写。晚上我回来再说。

答案补充:
Private Sub Command1_Click()
Dim i As Integer, xuanzhong(1 To 10) As Integer, chongfu As Boolean
Dim chuan As String, hang
Open mubiao For Input As #1

chuan = Input$(LOF(1), #1)
Close #1
hang = Split(chuan, vbCrLf)
text1 = ""
For i = 1 To 10

Do

Randomize

xuanzhong(i) = Int(Rnd * (UBound(hang) + 1)) '在0到行数之间随机选取一行

chongfu = False '下面判断是否重复选取

For j = 1 To i - 1 '与已经选取的判断


If xuanzhong(i) = xuanzhong(j) Then '如果重复



chongfu = True '标记重复



Exit For '跳出比较循环,因为与后面的比较没有意义了


End If

Next j '不重复,那就继续比较,直到前一个选取的行数

Loop Until Not chongfu '全部不重复就出去,否则重新do

text1 = text1 & vbCrLf & hang(xuanzhong(i)) '把不重复的行加到文本框
Next i
End Sub
注意把text1的多行性设置成真,否则不分行。

方法二:
分行读取,分别存入数组(数组设置成动态的)。下面的选取代码同上。
Private Sub Command1_Click()
Dim i As Integer, xuanzhong(1 To 10) As Integer, chongfu As Boolean
Dim hang() As String, hangshu As Integer
Open mubiao For Input As #1

Do While Not EOF(1) '文件未完

ReDim Preserve hang(hangshu) '增加新行

Line Input #1, hang(hangshu) '读入一行到新增行

hangshu = hangshu + 1 '行数加1

Loop

hangshu = hangshu - 1
Close #1
text1 = ""
For i = 1 To 10

Do

Randomize

xuanzhong(i) = Int(Rnd * (hangshu + 1)) '在0到行数之间随机选取一行

chongfu = False '下面判断是否重复选取

For j = 1 To i - 1 '与已经选取的判断


If xuanzhong(i) = xuanzhong(j) Then '如果重复



chongfu = True '标记重复



Exit For '跳出比较循环,因为与后面的比较没有意义了


End If

Next j '不重复,那就继续比较,直到前一个选取的行数

Loop Until Not chongfu '全部不重复就出去,否则重新do

text1 = text1 & vbCrLf & hang(xuanzhong(i)) '把不重复的行加到文本框
Next i
End Sub

上一个:怎样用vb发邮件到指定邮箱
下一个:高分求VB下求mapx的最短路径

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,