Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как узнать количество строк в File.txt / 11 сообщений из 11, страница 1 из 1
08.05.2008, 09:34
    #35301490
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество строк в File.txt
Всем, здравствуйте !!!

Переди обработки текстового файла , нужно узнать его количество
строк, для включения ProgressBar -a

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
MousePointer = vbHourglass
     Open "" & dlg1.FileName & "" For Input As # 1 
     While Not EOF( 1 )
     Line Input # 1 , sTemp 
     .
     .
    Wend
 Close # 1 
 MousePointer = vbDefault

Спасибо
...
Рейтинг: 0 / 0
08.05.2008, 09:46
    #35301521
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество строк в File.txt
Если знаете длину строки, то делите размер файла на длину строку.
Если не знаете, можно :
1) посчитать строки точно и выдать значение ( это лишняя операция на чтение файла)
2 если известен примерный размер ( например от 30 до 50 знаков), то размер файла делим на 50.
А последней операцией в обработчике ставим pb1.value=pb1.maxvalue.
...
Рейтинг: 0 / 0
08.05.2008, 10:00
    #35301550
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество строк в File.txt
Считать размер файла в байтах ??
...
Рейтинг: 0 / 0
08.05.2008, 10:03
    #35301556
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество строк в File.txt
Да, в байтах . И к длине строки не забудьте добавить код для переноса строки.
...
Рейтинг: 0 / 0
08.05.2008, 10:10
    #35301577
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество строк в File.txt
Спасибо !
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
  Private Sub Command1_Click()
Dim fsObj, filePointer, myFile, Size
dlg1.ShowOpen

myFile = dlg1.FileName
Set fsObj = CreateObject("Scripting.FileSystemObject")
If fsObj.FileExists(myFile) = True Then
    Set filePointer = fsObj.GetFile(myFile)
     Size = filePointer.Size /  90 
     MsgBox Size
Else
    MsgBox "Файл " & UCase(myFile) & " не найден."
End If
End Sub
...
Рейтинг: 0 / 0
08.05.2008, 10:15
    #35301594
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество строк в File.txt
автор
Dim fsObj, filePointer, myFile, Size

Это плохо. Надо указывать типы данных.
авторdlg1.ShowOpen
У вас стоит проверка на случай нажатия кнопки ESC ?
авторIf fsObj.FileExists(myFile) = True Then
Это можно заменить на
If fsObj.FileExists(myFile) Then

...
Рейтинг: 0 / 0
08.05.2008, 10:30
    #35301655
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество строк в File.txt
Понял.
Еще.
pbr.Max = Size у меня получается невсегда целое число
и тогда получаю ошибочку
Invalid property value
как здесь выходить из ситуации ?
...
Рейтинг: 0 / 0
08.05.2008, 10:34
    #35301669
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество строк в File.txt
ValeriuПонял.
Еще.

Не, не понял.
Я же написал, что надо ясно указывать тип данных.
Dim Size as long .
Еще слово Size лучше не использовать.
Так как во многих объектах оно уже зарезервировано. И непонятно что за сайз такой.
Напишите
Dim FileByLineSize as Long
...
Рейтинг: 0 / 0
08.05.2008, 10:44
    #35301698
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество строк в File.txt
Да, что-то действительно не клеется.
Размер файла деленный на количество символов в строке, у меня получается разность
где-то в 5000, и , естественно ошибка ....

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
Private Sub cmdStation_Click()
Dim sTemp As String
Dim MString$
Dim i As Integer
Dim myFile As String
Dim fsObj As Object
Dim FileByLineSize As Long

On Error GoTo Error
    dlg1.ShowOpen

myFile = dlg1.FileName
Set fsObj = CreateObject("Scripting.FileSystemObject")
If fsObj.FileExists(myFile) = True Then
     Set filePointer = fsObj.GetFile(myFile)
     FileByLineSize = filePointer.Size /  90 
   Else
    MsgBox "Fisierul " & UCase(myFile) & " nu exista ..."
End If
        i =  0 
        pbr.Min =  0 
        pbr.Max = FileByLineSize
     
MousePointer = vbHourglass
Open "" & dlg1.FileName & "" For Input As # 1 
While Not EOF( 1 )
Line Input # 1 , sTemp
        i = i +  1 
        pbr.Value = i


Nod = "^TelLocal" & "(" & """" & Piece(sTemp, vbTab,  4 ) & """" & "," & """" & Piece(sTemp, vbTab,  1 ) & """" & "," & """" & Piece(sTemp, vbTab,  2 ) & """" & ")"
Sod = Piece(sTemp, vbTab,  5 ) & "/" & Piece(sTemp, vbTab,  6 ) & "/" & Piece(sTemp, vbTab,  7 ) & "/" & Piece(sTemp, vbTab,  8 ) & "/" & Piece(sTemp, vbTab,  9 ) & "/" & Piece(sTemp, vbTab,  10 ) & "/" & Piece(sTemp, vbTab,  11 )
If sTemp = "" Then
MousePointer = vbDefault
Exit Sub
End If
m.Do "Sav^Desc", Nod, Sod

Wend
 Close # 1 
pbr.Refresh
MousePointer = vbDefault

Exit Sub
Error:
MousePointer = vbDefault
MsgBox ("Error: " & Err.Description)

End Sub 
...
Рейтинг: 0 / 0
08.05.2008, 11:22
    #35301847
ДмиДми
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество строк в File.txt
Размер - 100%.
По мере считывания суммируем длины строк с учётом кодировки (одно- или двухбайтовая) и длины ограничителей строки (только CR или CRLF) - вот и данные для прогресс-бара.

Зачем размер файла на что-то делить, не понимаю. Может быть, объясните?
...
Рейтинг: 0 / 0
08.05.2008, 11:48
    #35301968
Valeriu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как узнать количество строк в File.txt
Так для начало нужно указывать

Код: plaintext
1.
2.
        pbr.Min =  0 
        pbr.Max = FileByLineSize
     

т.е. максимально до куда заполнится ProgressBar !

А я и считываю строку потом добавляю к счетчику 1 ...
Код: plaintext
1.
2.
3.
4.
i= 0 
        .
        .
        i = i +  1 
        pbr.Value = i
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как узнать количество строк в File.txt / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]