Newsgroup: it.comp.lang.visual-basic
Titolo: Contare righe in file di testo

Come faccio a contare le righe presenti in un file di testo (.txt) ?
Grazie mille.
 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Grazie mille.
http://www.sundaysw.com/sw/cod_file_lines
ciao, a.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Grazie mille.
L'unico modo per contare le righe di un file di testo è "contarle" aprendo
il file, leggere riga per riga incrementando nel contempo un contatore.
Se si tratta di righe formattate tutte uguali si leggono 100 righe dal
file (sarebbe sufficiente una sola riga), si applica la formula:
Totale Righe = numero bytes file / (length di una riga + numero caratteri
terminatore di riga) 
Se si tratta di un export delimitato si possono leggere le prime 1000 e
paragonare il peso di ciascuna riga con il totale, (quello che hai
comunque è un calcolo per approsimazione, ottieni le righe "circa" che ci
sono).


 ha scritto nel messaggio 
news:dhrdfa$53q$1...@news.newsland.it...

Dim nomefile As String
Dim data As String
Dim file As New System.IO.StreamReader(nomefile)
Dim word As String = "default"
Dim flag As Integer = 0
Dim count As Integer = 0
While flag = 0
word = file.ReadLine
If word = "" Then
flag = 1
Else : count = count + 1
End If
End While
noperazioni.Text = count
file.Close()

file.Close()
Per me manca un WEND !!!
non è mica C
ciao
  Stefano

 Grazie mille.
Ti ho già risposto sull'altro NG, fermo restando che siano 
valide le soluzioni proposte, le trovo un pò poco performanti.
Come ti ho accennato la soluzione che ritengo migliore
è quella di usare le API ma serve recuperare l'Hwnd di
Notepad aperto con quel file, cosa semplice passando il
Nome del file e cercandone la Caption, ma ancora più semplice
se usassi Shell per aprirlo e dal PID ricavassi l'Hwnd
a quel punto passando l'Hwnd a SendMessage ed usando la
costante EM_GETLINECOUNT ricavi il numero di linee.
Alternativa altrettanto valida e molto più veloce che scorrere
il file riga per riga è importare il file in una TextBox 
quindi sempre con SendMessage passando l'Hwnd della Text 
ricavi le linee:
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
Sub CommandButton_Click()
    Dim fno As Integer
    Dim fname As String
    Dim lineCount as Long
    'On Local Error Resume Next
 
    'load the file into the textbox
    Open fname For Input As #fno
        Me!Text1 = Input$(LOF(fno), fno)
    Close #fno
 
   'get/show the number of lines in the edit control
    lineCount = SendMessage(Me!Text1.Hwnd, EM_GETLINECOUNT, 0&, ByVal
0&)
    MsgBox "Numero linee = " & Format$(lineCount, "##,###")
End Sub
Saluti
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 il file riga per riga č importare il file in una TextBox
per curiosita', hai fatto un timing?
un mio editor in vb con file di 3 mb (in un rtbox) si inchioda vari secondi,
gli altri sistemi mi sembrava rallentassero molto meno.
ciao, a.

 ciao, a.
Ho provato in effetti con un File piccolo la routine che
si appoggia alla TextBox, per l'uso normale vado direttamente
all'Hwnd del File.Txt
Se hai la possibilità prova a testare con un file grosso
direttamente sul File, da me i test fatti in passato davano
apprezzabili differenze.
Ciao
