Страница: 1 | 2 |
Вопрос: Определение числа строк в текстовом файле
Добавлено: 03.05.07 16:02
Автор вопроса: Last | ICQ: 480-791-781
Собственно сабж - как можно определить число строк в текстовом файле, или может количество символов?
Ответы
Всего ответов: 29
Номер ответа: 1
Автор ответа:
Alexandr.R
Вопросов: 9
Ответов: 115
Web-сайт:
Профиль | | #1
Добавлено: 03.05.07 17:42
Если .Net то
Dim oStr() As String
oStr = File.ReadAllLines(FilePath)
Dim iCount as int32 = oStr.Length 'вот и число строк
Номер ответа: 2
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #2
Добавлено: 03.05.07 18:06
Думаю самое простое и не требующее оперативки решение - открыть файл бинарно и считать количество байт 13 и/или 10
Номер ответа: 3
Автор ответа:
intel-DX
ICQ: 445091742
Вопросов: 4
Ответов: 169
Профиль | | #3
Добавлено: 03.05.07 18:10
Если VB 6.0 то
Open FileName For Input as #1
  = Len(Input(LOF(1), #1))
close #1
Номер ответа: 4
Автор ответа:
Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #4
Добавлено: 03.05.07 18:11
VB6:
Open FilePath For Input As #1
Do While Not Eof(1)
i=i+1
Line Input #1, Stroka$
Loop
MsgBox "Количество строк: " & i
Номер ответа: 5
Автор ответа:
Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #5
Добавлено: 03.05.07 18:12
Что это?
Номер ответа: 6
Автор ответа:
intel-DX
ICQ: 445091742
Вопросов: 4
Ответов: 169
Профиль | | #6
Добавлено: 03.05.07 18:35
Input(LOF(1), #1)- читает все символы из файла
Len() - возврачает длину стоки
Что не понятно?
Номер ответа: 7
Автор ответа:
Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #7
Добавлено: 03.05.07 18:37
Непонятно, что будет в итоге.
Номер ответа: 8
Автор ответа:
Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #8
Добавлено: 03.05.07 18:40
Ответом ведь будет не количество строк, а то же самое значение LOF(1)
Номер ответа: 9
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #9
Добавлено: 03.05.07 18:43
Если VB6.0, то вроде того:
Private Sub Form_Load()
Dim lngFree As Long, lngLines As Long, byteChar As Byte
lngFree = FreeFile
lngLines = 1
Open "C:\1.txt" For Binary Access Read As #lngFree
Do Until EOF(lngFree)
Get #lngFree, , byteChar
If byteChar = 10 Then lngLines = lngLines + 1
Loop
Close #lngFree
MsgBox lngLines
End Sub
Номер ответа: 10
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #10
Добавлено: 03.05.07 18:51
2 Arseny
Может я и не прав, но помоему Line Input както не так считает строки, одну строку может на несколько разбить, или это только Input так делает.
В любом случае мой код побыстрее, хотя это надо потестить
А intel-DX ответил на вторую часть вопроса
Номер ответа: 11
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #11
Добавлено: 03.05.07 18:53
2 intel-DX
Хотя c твоим кодом я тоже не согласен
Проще и быстрее (опять же оперативу не грузит)
Номер ответа: 12
Автор ответа:
intel-DX
ICQ: 445091742
Вопросов: 4
Ответов: 169
Профиль | | #12
Добавлено: 03.05.07 18:55
Такое ж как у ZagZag но меньше
Open FileName For Input As #1
 o While Not EOF(1)
Line Input #1, T
Strk = Strk + 1
Loop
Close #1
MsgBox "4uslo rladkiv" & Strk
Номер ответа: 13
Автор ответа:
Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #13
Добавлено: 03.05.07 19:04
2 ZagZag: Line Input считывает ровнехонько одну строку. И если ты не будешь открывать бинарные файлы, то это - самый простой способ.
Номер ответа: 14
Автор ответа:
Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #14
Добавлено: 03.05.07 19:07
Open FileName For Input As #1
 o While Not EOF(1)
Line Input #1, T
Strk = Strk + 1
Loop
Close #1
MsgBox "4uslo rladkiv" & Strk
Номер ответа: 15
Автор ответа:
Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #15
Добавлено: 03.05.07 19:11