请问如何确定文件的行数

windcat 2003-05-12 04:57:30
我是这么写的
Open App.Path & "\sources\e-" & Text1.Text & "-pfsjnl.bin" For Input As #1
Do While Not EOF(1)
Line Input #1, str1
i = i + 1
Loop
Close #1
但是由于文件太大,结果速度很慢
请问有什么方法可以快速得到文件的行数
...全文
78 点赞 收藏 14
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lwy1982314 2003-05-13
用 变量名=lop(文件名)/len(rec)
其中rec是记录变量!
回复
叶帆 2003-05-13
这是整体读取,速度更快一些,比分行读要快
回复
danielinbiti 2003-05-13
yefanqiu(叶帆) 他想知道行数得目的是读的快些,你的方法是先读取在判断,更慢了-_-
回复
叶帆 2003-05-13

Private Sub Command1_Click()
Dim a As String
Open App.Path & "\sources\e-" & Text1.Text & "-pfsjnl.bin" For Binary As #1

'Text2.MultiLine = True '在属性框设置 ‘文件太大,可把text2换成richText
'Text2.ScrollBars = 3

a = String(LOF(1), " ")
Get #1, , a
Text2 = a



Close #1

MsgBox "行数:" + Str(GetTextLines(Text2.hWnd))

End Sub
‘模块
Public Const EM_GETLINECOUNT = &HBA
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

'获得文本的行数
Public Function GetTextLines(txtHwnd As Long) As Long
GetTextLines = SendMessage(txtHwnd, EM_GETLINECOUNT, 0, 0)
End Function

回复
danielinbiti 2003-05-13
Dim wholefile() As Byte
回复
windcat 2003-05-13
执行楼上语句

Get #1,,wholefile
抱错为
"变量使用了一个vb不支持的自动化类型"
是否要引用什么东西?
回复
of123 2003-05-13
逐行读入将许多时间花费在磁盘缓存处理上了。
dim wholefile, tmp as string
Open App.Path & "\sources\e-" & Text1.Text & "-pfsjnl.bin" For Binary As #1
Get #1,,wholefile
close #1
tmp = replace(wholefile, vbnewline, "")
msgbox "There are " & len(wholefile)-len(tmp) & " lines in the file"
回复
qingming81 2003-05-13
文件太大,也许只能如此(楼主自己的写法)吧。
回复
DaiLM 2003-05-13
是否应考虑自动换行呢?
回复
scie 2003-05-13
bydisplay(时光):你答非所问!!!
回复
danielinbiti 2003-05-13
bydisplay(时光)的写的是文本框中行数,不是文件的行数
回复
windcat 2003-05-13

text2 = App.Path & "\sources\e-" & Text1.Text & "-pfsjnl.bin"
我这样写它说要求对象
回复
windcat 2003-05-13
楼上的写的请问文件名写在哪儿啊
文件的路径写哪儿
望大家指点一下
回复
bydisplay 2003-05-12
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long


Private Const EM_GETLINECOUNT = &HBA

lineCount = SendMessage(Text2.hwnd, EM_GETLINECOUNT, 0&, 0&)

回复
相关推荐
发帖
VB基础类
创建于2007-09-28

7490

社区成员

VB 基础类
申请成为版主
帖子事件
创建了帖子
2003-05-12 04:57
社区公告
暂无公告