请问如何确定文件的行数

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
但是由于文件太大,结果速度很慢
请问有什么方法可以快速得到文件的行数
...全文
124 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
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&)

7,785

社区成员

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

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