Newsgroup: it.comp.appl.access
Titolo: contare righe in file di testo

In una routine ho bisogno di ricavare il numero di righe presenti in un file
di testo.(.txt)
Come faccio ?
Grazie mille
 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Grazie mille
Non sono sicuro, ma puoi provare cosě:
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  As Long = &HBA
Dim lngCount as Long
lngCount=SendMessage(hwndFile,EM_GETLINECOUNT, 0, ByVal 0&)
Dove hwndFile č l'handle del tuo file di testo, e
per ricavarlo servirebbe sapere come ha fatto ad
aprirlo, se č aperto, altrimenti serve aprirlo
e ricavare l'Handle per poi eseguire la funzione
API.
Ciao
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Grazie mille
Ti scrivi una public function che apre il file, lo legge tutto una riga
alla volta e le conta.
Dim Dummy As String, righe As Long
righe = 0
Open ...... AS #1
While Not EOF(1)
    Line Input #1, Dummy
    righe = righe + 1
Wend
Close
Namor
-- 
namor at inwind punto it
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Grazie mille
  Dim sStringa As String
  Dim iContaRighe As Long
  Open "c:\prova.txt" For Input As 1
  Do
       Line Input #1, sStringa
       iContaRighe = iContaRighe + 1
   Loop While Not EOF(1)
   MsgBox iContaRighe
Metodo non molto veloce e abbastanza banale,  se non hai molte righe può 
andare bene.
Questo metodo conta anche le righe vuote modifica il codice
come preferisci.

 Namor
Ciao Marco.
Troppo lento se il File è lungo.
Sarebbe più veloce importare il tutto in una TextBox
con un Array in formato Byte, quindi contare le righe
della TextBox sempre con l'API che ho suggerito che
sulla TextBox sono certo funziona(dovrebbe andare anche
direttamente sul file).



Forse ti conviene postare il codice completo.
Ciao ;-)

 Ciao ;-)
Beh se vi semplifica la cosa certo, ma non mi
pareva cosě complesso.
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 Declare Function apiGetFocus Lib "user32" _
        Alias "GetFocus" _
         () As Long
Private Const EM_GETLINECOUNT = &HBA
Sub CommandButton_Click()
    Dim fno As Integer
    Dim fname As String
    Dim cnt As Integer
    Dim lineCount as Long
    Dim hwndCtl 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
 
    hwndCtl=fhWnd(Me!Text1)
   'get/show the number of lines in the edit control
    lineCount = SendMessage(hwndCtl, EM_GETLINECOUNT, 0&, ByVal 0&)
    MsgBox "Numero linee = " & Format$(lineCount, "##,###")
End Sub
 
Function fhWnd(ctl As Control) As Long
    On Error Resume Next
    ctl.SetFocus
    If Err Then
        fhWnd = 0
    Else
        fhWnd = apiGetFocus
    End If
    On Error GoTo 0
End Function


 pareva così complesso.
grazie, non è per la complessità del codice ma visto che la
persona che lo ha chiesto non sapeva come fare è
sottointeso che aveva problemi, in questo modo
penso si risolva prima.
Ciao ;-)

Alessandro Baraldi ha scritto:




Non avevo valutato la velocità di esecuzione, anche perchè non ci ha dato
indicazioni sulle dimensioni dei files e sulla frequenza dei conteggi. Se
fossero solo piccoli files o se deve farlo solo una volta al mese è
accettabile, anche se è un po' più lento.
Bisognerebbe quantificare la differenza di velocità. Se è poca io opterei
comunque per la più lenta per questioni di semplicità del codice, sono
solo poche righe il che faciliterebbe il compito di rimetterci le mani in
futuro.
Inoltre non conoscendo il suo livello non vorrei che la soluzione API per
lui fosse solo una blackbox, che funziona bene ma non si sa come e perchè.
A questo punto il consiglio è di provarle entrambe e smanettarci un po',
così ce lo dà lui un confronto di velocità. E' l'occasione buona per
imparare ad usare le API!
Sai che l'altro weekend ero nella tua zona? Sono andato a trovare mia
sorella a Guastalla.
Ciao.
