Visual Basic - Numero de Lineas de Un Archivo Sin Recorrerlo

Life is soft - evento anual de software empresarial
 
Vista:

Numero de Lineas de Un Archivo Sin Recorrerlo

Publicado por Rodrigo Pizarro (1 intervención) el 29/08/2001 18:46:41
Hola como Puedo Saber el Numero de lineas de Un archivo sin tener que recorrerlo con un contador
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Numero de Lineas de Un Archivo Sin Recorrerlo

Publicado por Javier Pérez (170 intervenciones) el 30/08/2001 12:43:58
No puedes; bueno, no puedes a no ser que (cosa poco probable) todas las líneas tengan la misma longitud. En ese caso simplemente dividiendo el tamaño del fichero por la longitud de una línea (considerando además los caracteres LF y CR finales) tendrías el número de líneas que contiene. Como no suele ser habitual encontrar ficheros así, no te queda más remedio que recorrerlas y contarlas.

Si por casualidad tienes el fichero cargado en un control Rich Textbox, entonces puedes utilizar la función GetLineFromChar del control, pasándole como parámetro la posición del último caracter del control, con lo que obtendrás el número de la última línea. O sea:

Dim lineas As Long

lineas = RichTextBox1.GetLineFromChar(Len(RichTextBox1.Text) - 1) + 1

Resto uno ya que las posiciones de caracter se cuentan desde cero, y sumo 1 por que las líneas también se numeran desde cero.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Numero de Lineas de Un Archivo Sin Recorrerlo

Publicado por Mauricio Baeza (60 intervenciones) el 16/09/2001 08:51:36
Prueba este código, necesitas un TextBox y un CommandButton, en el text cargamos el archivo, suponiendo que es de texto, también podrias usar un RichText...

Option Explicit

Private Declare Function SendMessageByRef Lib "user32" Alias _
"SendMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, wParam As Long, _
lParam As Any) As Long

Private Sub Command1_Click()
' Obtiene el total de lineas en el cuadro de texto
Dim NumLineas As Long
Dim ArchivoLibre As Integer
Dim TamFichero As Long
Const EM_GETLINECOUNT = &HBA

If Dir(App.Path & "\pruebas.txt") = "pruebas.txt" Then
ArchivoLibre = FreeFile
Open App.Path & "\pruebas.txt" For Input As ArchivoLibre
TamFichero = LOF(ArchivoLibre)
Text1.Text = Input(TamFichero, ArchivoLibre)
Close ArchivoLibre
NumLineas = SendMessageByRef(Text1.hwnd, EM_GETLINECOUNT, 0&, 0&)
MsgBox Str(NumLineas)
End If
End Sub

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar