Foro de elhacker.net

Programación => 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


Código:
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:

Código:
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

Código:
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

Código:
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:
Código:
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)