Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: agus0 en 19 Diciembre 2009, 00:30 am



Título: [Resuelto] Como Crear un programa que "identifique cada linea de un textbox"???
Publicado por: agus0 en 19 Diciembre 2009, 00:30 am
Hola, como andan?

Bueno...
Mi duda es la siguiente

Como podria hacer un programa que, por ejemplo yo tuviera un textbox multilinea que diga:

Citar
hola
como
andas
agus0
foro.elhacker.net

y un Boton que al apretarlo,

salga un textbox que diga, "hola", despues uno que diga "como" a continuacion de este "andas" y despues "agus0" y asi sucesivamente.

Espero que me allan entendido, Gracias;

;D  Felices fiestas y Prospero año nuevo ;D


Título: Re: [Ayuda] Como Crear un programa que "identifique cada linea de un textbox"???
Publicado por: Hasseds en 19 Diciembre 2009, 01:07 am

Código:

Private Sub Command1_Click()
  Dim s() As String: s = Split(Text1, vbNewLine)
  Dim x As Integer: For x = 0 To UBound(s) - 1: MsgBox s(x): Next x
End Sub



Título: Re: [Ayuda] Como Crear un programa que "identifique cada linea de un textbox"???
Publicado por: agus0 en 19 Diciembre 2009, 01:20 am
No se me ocurrio ;D ;D ;D

pero una duda

por q el bucle se come la ultima palabra???


por el -1


Título: Re: [Resuelto] Como Crear un programa que "identifique cada linea de un textbox"???
Publicado por: Hasseds en 19 Diciembre 2009, 01:24 am
UBound(s) - 1


Título: Re: [Resuelto] Como Crear un programa que "identifique cada linea de un textbox"???
Publicado por: BlackZeroX en 19 Diciembre 2009, 06:28 am

Código
  1. ' API de Windows SendMessage  
  2. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''  
  3. Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long  
  4. Const EM_GETLINECOUNT = &HBA  
  5. Const EM_LINEFROMCHAR = &HC9  
  6. Const EM_LINELENGTH = &HC1  
  7. Const EM_LINEINDEX = &HBB
  8.  

Con esto lo puedes hacer

Aquí un ejemplo http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/40.htm

P.D.: Te andaba haciendo una funcion mejor que la del link pero al correrla se me crasheo y no tenia nada guardado asi que estodo lo que te pouedo dejar.

Dulces Lunas!¡


Título: Re: [Resuelto] Como Crear un programa que "identifique cada linea de un textbox"???
Publicado por: BlackZeroX en 19 Diciembre 2009, 07:10 am
En un Modulo de Clase

clsTexboX.cls

Código
  1.  
  2. '
  3. '   /////////////////////////////////////////////////////////////
  4. '   // Web:     http://InfrAngeluX.Sytes.Net/                  //
  5. '   //                                                         //
  6. '   //    |-> Pueden Distribuir Este Codigo siempre y cuando   //
  7. '   // no se eliminen los creditos originales de este codigo   //
  8. '   // No importando que sea modificado/editado o engrandesido //
  9. '   // o achicado, si es en base a este codigo es requerido    //
  10. '   // el agradacimiento al autor.                             //
  11. '   /////////////////////////////////////////////////////////////
  12.  
  13. Option Explicit
  14.  
  15. 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
  16. Private Const EM_GETLINE = &HC4
  17. Private Const EM_GETLINECOUNT = &HBA
  18. Private Const EM_LINEFROMCHAR = &HC9
  19. Private Const EM_LINEINDEX = &HBB
  20. Private Const EM_LINELENGTH = &HC1
  21.  
  22. Private vhwnd                                    As Long
  23.  
  24. Public Property Get Textbox_hwnd() As Long: Textbox_hwnd = vhwnd: End Property
  25. Public Property Let Textbox_hwnd(vData As Long): vhwnd = vData: End Property
  26.  
  27. Public Function LineCount() As Long
  28.    LineCount = SendMessage(vhwnd, EM_GETLINECOUNT, 0&, 0&)
  29. End Function
  30. Public Function LineLen(CharPos As Long)
  31.    LineLen = SendMessage(vhwnd, EM_LINELENGTH, CharPos, 0&)
  32. End Function
  33. Public Function GetLineFromChar(CharPos As Long) As Long
  34.    GetLineFromChar = SendMessage(vhwnd, EM_LINEFROMCHAR, CharPos, 0&)
  35. End Function
  36. Public Function GetCharFromLine(LineIndex As Long)
  37.    If LineIndex < LineCount Then GetCharFromLine = SendMessage(vhwnd, EM_LINEINDEX, LineIndex, 0&)
  38. End Function
  39. Public Function GetLineStr(LineIndex As Long) As String
  40. Dim StrArray()                          As Byte
  41. Dim lngLineLen                          As Long
  42.    If Not LineIndex >= LineCount Then
  43.        lngLineLen = LineLen(GetCharFromLine(LineIndex))
  44.        If Not lngLineLen < 1 Then
  45.            ReDim StrArray(lngLineLen + 1)
  46.            StrArray(0) = lngLineLen And 255
  47.            StrArray(1) = lngLineLen \ 256
  48.            SendMessage vhwnd, EM_GETLINE, LineIndex, StrArray(0)
  49.            GetLineStr = Left$(StrConv(StrArray, vbUnicode), lngLineLen)
  50.        End If
  51.    End If
  52. End Function
  53.  
  54.  

En un Formulario...

Código
  1.  
  2. Private Sub Form_Load()
  3. Dim ct                                          As clsTexboX
  4. Dim i                                           As Long
  5. Set ct = New clsTexboX
  6.    With Text1
  7.        .Text = "Clase By HTTP://InfrAngeluX.Sytes.Net/" & vbCrLf & _
  8.                "Miguel" & vbCrLf & _
  9.                "Angel" & vbCrLf & _
  10.                "Ortega" & vbCrLf & _
  11.                "Avila" & vbCrLf & _
  12.                "Alias" & vbCrLf & _
  13.                "BlackZeroX"
  14.    End With
  15.    With ct
  16.        .Textbox_hwnd = Text1.hwnd
  17.        For i = 0 To .LineCount - 1
  18.            MsgBox .GetLineStr(i)
  19.        Next i
  20.    End With
  21. End Sub
  22.  
  23.  

Dulces Lunas!¡


Título: Re: [Ayuda] Como Crear un programa que "identifique cada linea de un textbox"???
Publicado por: Hasseds en 19 Diciembre 2009, 23:12 pm

Código:

Private Sub Command1_Click()
  Dim s() As String: s = Split(Text1, vbNewLine)
  Dim x As Integer: For x = 0 To UBound(s) - 1: MsgBox s(x): Next x
End Sub




Un split y un for son suficientes.


Título: Re: [Resuelto] Como Crear un programa que "identifique cada linea de un textbox"???
Publicado por: seba123neo en 19 Diciembre 2009, 23:24 pm
si, la verdad depende lo que uno quiere hacer, pero creo que para lo que quiere le alcanza el split y el for, lo de la api es para algo mas avanzado como un editor de texto o algo parecido, si tenes miles de lineas la api es mucho mas rapida.


Título: Re: [Resuelto] Como Crear un programa que "identifique cada linea de un textbox"???
Publicado por: agus0 en 20 Diciembre 2009, 00:27 am
A mi con la respuesta de Hasseds me alcanso, G R A C I A S .

Aunque voy a tener en cuenta lo de la API, Gracias ░▒▓BlackZeroҖ▓▒░