Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: NsTeam en 30 Noviembre 2010, 17:57 pm



Título: Duda Leer Linea por Linea de Un textBox
Publicado por: NsTeam en 30 Noviembre 2010, 17:57 pm
Hola Gente...

Se me surgio un problema y quize acudir a ustedes para ver si me dan una manito :)

Como podria hacer para que un Timer Lea Linea por Linea el contenido de un texbox

me Explico:

en un intevalo de 1 segundo lea linea por linea el contenido de un textbox
y luego al terminar de leer la ultima linea vuelva a leer la primera linea :)

espero dejarme entender... gracias a todos y un fuerte abrazo :)


Título: Re: Duda Leer Linea por Linea de Un textBox
Publicado por: Psyke1 en 30 Noviembre 2010, 21:43 pm
Yo al menos haria asi:
Código
  1. Option Explicit
  2.  
  3. Rem Añade un TextBox, un CommandButton y un Timer
  4.  
  5. Private sTextBoxLines$()
  6. Private lLimit&
  7. Private lLine&
  8.  
  9. Private Sub Form_Load()
  10.    With Timer1
  11.        .Enabled = False
  12.        .Interval = 1000
  13.    End With
  14.  
  15.    Command1.Caption = "Prueba"
  16.  
  17.    Text1.Text = "Que" & vbCrLf & _
  18.                 "vivan" & vbCrLf & _
  19.                 "las" & vbCrLf & _
  20.                 "ranas"
  21. End Sub
  22.  
  23. Public Function LoadLines(ByVal sText$) As Boolean
  24.    Erase sTextBoxLines$() : lLine& = 0
  25.    sTextBoxLines$() = Split(sText$, vbCrLf)
  26.    lLimit& = UBound(sTextBoxLines$())
  27.    LoadLines = CBool(lLimit&)
  28. End Function
  29.  
  30. Private Sub Timer1_Timer()
  31.    MsgBox sTextBoxLines$(lLine&)
  32.    lLine& = lLine& + 1
  33.    If lLine& > lLimit& Then
  34.        Timer1.Enabled = False
  35.        End
  36.    End If
  37. End Sub
  38.  
  39. Private Sub Command1_Click()
  40.    If LoadLines(Text1.Text) Then
  41.        Timer1.Enabled = True
  42.    End If
  43. End Sub

DoEvents! :P


Título: Re: Duda Leer Linea por Linea de Un textBox
Publicado por: Stelio Kontos en 1 Diciembre 2010, 02:58 am
Para ahorrarte el lío lo que puedes hacer es usar Split y un módulo que haga de timer.
El siguiente código actúa de timer, pero sin tener que cargar el control (en un módulo):
Código
  1. Sub Pause(interval)
  2. Current = Timer
  3. Do While Timer - Current < Val(interval)
  4. DoEvents
  5. Loop
  6. End Sub
Su uso es Pause(intervalo)

Y aquí te dejo un ejemplo que he hecho sobre la marcha:
Código
  1. Dim tArray() As String 'Declaro un array
  2. Text1.Text = "Hola" & vbCrLf & "tio" & vbCrLf & "calla" 'Text1.text multilinea
  3. tArray = Split(Text1.Text, vbCrLf) 'Almaceno en el array lo que hay en cada salto de linea
  4. Do 'Empiezo el bucle
  5. For i = LBound(tArray) To UBound(tArray) 'Esas funciones recorren el array sin saber donde empieza ni donde acaba
  6.        Text2.Text = Text2.Text & tArray(i)  'Opcional, aniade la palabra a otra caja de texto
  7. Pause (1) 'Espero un segundo
  8. Next i
  9. Loop 'El bucle empieza de nuevo