Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Определение числа строк в текстовом файле Добавлено: 03.05.07 16:02  

Автор вопроса:  Last | ICQ: 480-791-781 
Собственно сабж - как можно определить число строк в текстовом файле, или может количество символов?

Ответить

  Ответы Всего ответов: 29  

Номер ответа: 1
Автор ответа:
 Alexandr.R



Вопросов: 9
Ответов: 115
 Web-сайт: gvin.net
 Профиль | | #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  
  ;D = Len(Input(LOF(1), #1))
  close #1

Ответить

Номер ответа: 4
Автор ответа:
 Arseny



ICQ: 298826769 

Вопросов: 53
Ответов: 1732
 Профиль | | #4 Добавлено: 03.05.07 18:11
VB6:
Dim i As Long, Stroka As String
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
D = Len(Input(LOF(1), #1))

Что это?

Ответить

Номер ответа: 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, то вроде того:
Option Explicit

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 твоим кодом я тоже не согласен =)
MsgBox FileLen("C:\1.txt";)

Проще и быстрее (опять же оперативу не грузит)

Ответить

Номер ответа: 12
Автор ответа:
 intel-DX



ICQ: 445091742 

Вопросов: 4
Ответов: 169
 Профиль | | #12 Добавлено: 03.05.07 18:55
Такое ж как у ZagZag но меньше
    Open FileName For Input As #1
    ;Do 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
Такое ж как у ZagZag но меньше
    Open FileName For Input As #1
    ;Do 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
Может я и не прав, но помоему Line Input както не так считает строки, одну строку может на несколько разбить, или это только Input так делает.
Точно не прав. :) Input считывает до символов запятой, перевода строки, табуляции(вроде бы), A Line Input на знаки плевать. Строка и есть строка.

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам