Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: Carlosnuel en 4 Abril 2007, 03:42 AM

Título: contar saltos de linea RichTextBox VB
Publicado por: Carlosnuel en 4 Abril 2007, 03:42 AM
Hola estoy haciendo un proyecto para la escuela el cual consiste en abrir un documento de texto contar los saltos de linea y cortar el documento ejemplo

#de lineas maximo por hoja = 25
# numero de lineas del documento = 100

Total de paginas generadas = 100/25 = 4

todo esto lo estoy manejando por medio de un richtextbox pero al momento de realizar la búsqueda no funciona mi código llevo toda la tarde y no encuentro solución podrían ayudarme



Dim sText, sFnd
Dim lPos
Dim cont As Integer

  cont = 1
  sText = RichTextBox1.Text 
  sFnd = vbCrLf     'Texto buscado (salto de linea).

'pretendo ir avanzando por el texto para hacer una comparacion
'buscando el salto de linea
 
While Len(RichTextBox1.Text) > cont

lPos = InStr(1, sText, sFnd)
  If lPos > 0 Then    'Se encontró la cadena

    call MsgBox("La cadena se encontró en la posición " & lPos, vbExclamation)
' estos msgbox son temporales, después los sustituiré por la continuación del programa
  Else
    call MsgBox("No se encontró la cadena")
  End If
   cont = cont + 1
   Wend




el problema que tengo es que no puedo moverme entre todos los caracteres que hay en el richtexbox1 para buscar los saltos de linea

ojala puedan ayudarme
Título: Re: contar saltos de linea RichTextBox VB
Publicado por: Syphroot en 4 Abril 2007, 04:04 AM

El problema al parecer esta en la primer linea dentro del bucle while:


lPos = InStr(1, sText, sFnd)


el primer argumento ponle tu contador "cont", ya que es la posicion  en la va a empezar a buscar las coincidencias


lPos = InStr(cont, sText, sFnd)


asi en cada iteración el contador incrementa y busca en la siguiente posición...

Título: Re: contar saltos de linea RichTextBox VB
Publicado por: Carlosnuel en 5 Abril 2007, 23:21 PM
gracias por el consejo... pero lo he implementado de la siguiente forma (con un ciclo FOR) y funciona pero por ejemplo si tengo en el espacio 3 un salto de linea, en el espacio 5 otro y en el 7 otro, lo que hace mi programa es que se detiene en el espacio 3 e imprime como 20 veces que esta en el espacio 3 y asi para el 5 y 7

este es el codigo ayudenme porfavor


Dim sText, sFnd
Dim lPos
Dim cont As Integer

    cont = 1
  'Texto en el cual se va a buscar, puede ser un cuadro de texto o cualquier String.
 
  sText = RichTextBox1.Text
  sFnd = vbCrLf 'Texto buscado.

  NumText = Len(RichTextBox1.Text)

  For i = 1 To NumText
   lPos = InStr(i, sText, sFnd)
  If lPos > 0 Then
    Call MsgBox("La cadena se encontró en la posición " & lPos, vbExclamation)
  Else
    Call MsgBox("No se encontró la cadena")
  End If
   'cont = cont + 1
Next i


Título: Re: contar saltos de linea RichTextBox VB
Publicado por: CeLaYa en 6 Abril 2007, 01:22 AM
creo que el problema es el contador "i" si tienes un salto de linea en la posicion 3 al entrar al ciclo te va a mandar 3 veces el mensaje.


lo que debes hacer es mover tu contador al encontar un salto de linea, tú código quedaría asi:

Dim sText, sFnd
Dim lPos
Dim cont As Integer

    cont = 1
  'Texto en el cual se va a buscar, puede ser un cuadro de texto o cualquier String.
 
  sText = RichTextBox1.Text
  sFnd = vbCrLf 'Texto buscado.

  NumText = Len(RichTextBox1.Text)

  For i = 1 To NumText
   lPos = InStr(i, sText, sFnd)
  If lPos > 0 Then
    Call MsgBox("La cadena se encontró en la posición " & lPos, vbExclamation)
   

      'Aqui mueves "i" despues del salto de linea encontrado
      i = lpos+2



  Else
    Call MsgBox("No se encontró la cadena")
  End If
   'cont = cont + 1
Next i


Título: Re: contar saltos de linea RichTextBox VB
Publicado por: Carlosnuel en 6 Abril 2007, 01:36 AM
hay si funciona T.T

Celaya eres mi nuevo dios en Visual Basic...

gracias por el consejo

oye una pregunta

porque i = lpos + 2

no entiendo porque lo incrementas 2 veces

Título: Re: contar saltos de linea RichTextBox VB
Publicado por: CeLaYa en 6 Abril 2007, 01:55 AM
el salto de linea se compone de dos partes:


vb       cr              lf
       Fin de      Salto de
        linea         linea

cuando usas la función InStr te va a devolver la posición del fin de linea, en esta caso 3, lo incremento en dos para que sigua el bucle despues del fin de linea(cr, posición 3) y el salto de linea(lf, posición 4) y continue en el siguiente caracter de la cadena (posición 5)