elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Borrar última línea de un textbox
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Borrar última línea de un textbox  (Leído 11,348 veces)
extreme69

Desconectado Desconectado

Mensajes: 178


Be BlackHat but don't forget your principles.


Ver Perfil
Borrar última línea de un textbox
« en: 11 Mayo 2012, 09:14 am »

Alguien me dice como se hace esto en VB6:

http://foro.elhacker.net/empty-t335521.0.html

Tengo el número de linea que quiero borrar, ¿como la borro?


En línea

extreme69

Desconectado Desconectado

Mensajes: 178


Be BlackHat but don't forget your principles.


Ver Perfil
Re: Borrar última línea de un textbox
« Respuesta #1 en: 11 Mayo 2012, 09:16 am »

Ta, olvidense, lo hago con un listbox y a la ***** :P


En línea

79137913


Desconectado Desconectado

Mensajes: 1.169


4 Esquinas


Ver Perfil WWW
Re: Borrar última línea de un textbox
« Respuesta #2 en: 11 Mayo 2012, 13:31 pm »

HOLA!!!

Código
  1. Private sub DeleteLine (XLine as long, TXT as TextBox)
  2. Dim Aux() as string
  3. Aux = Split(TXT.Text, VbNewLine)
  4. Txt.text=Vbnullstring
  5. For X = 0 to ubound(aux)
  6.    if X <> XLine then txt.text = txt.text & Aux(x) & VbNewLine
  7. Next
  8. End Sub

(no lo testee pero debe funcinar)

GRACIAS POR LEER!!!
« Última modificación: 11 Mayo 2012, 20:13 pm por 79137913 » En línea

"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

 79137913                          *Shadow Scouts Team*
Saberuneko


Desconectado Desconectado

Mensajes: 2.181



Ver Perfil WWW
Re: Borrar última línea de un textbox
« Respuesta #3 en: 11 Mayo 2012, 14:06 pm »

Ta, olvidense, lo hago con un listbox y a la ***** :P

Así lo arreglé yo en su momento :3
En línea

Deeo Raiser

Desconectado Desconectado

Mensajes: 22


Se todo Sobre Ti.


Ver Perfil WWW
Re: Borrar última línea de un textbox
« Respuesta #4 en: 11 Mayo 2012, 18:35 pm »

Hola extreme69, como estas ?

Aca tengo tu solución testeada  ;D, estuve mirando el codigo de 79137913 y no me funciono   :-(, así que le hice unas modificaciones y te agrego 2 funciones para poder contar las lineas de los TextBox o algún String


ELIMINAR UNA LINEA POR SU NUMERO
Código
  1.    Dim Lineas() As String 'Auxiliar donde se guardan las lineas
  2.    Dim I  As Long 'Variable del contador
  3.  
  4.    Lineas = Split(Texto.Text, vbNewLine)
  5.  
  6.    'Borro el contenido de Texto
  7.    Texto.Text = vbNullString
  8.  
  9.    For I = 0 To UBound(Lineas)
  10.        If I <> NumeroLinea Then
  11.            'Si la linea es distinta a la que quiero eliminar la agrego, sino la omito
  12.            Texto.Text = Texto.Text & Lineas(I) & vbCrLf
  13.        End If
  14.    Next
  15.    Borrar_Linea = Texto.Text
  16.  

CONTAR LINEAS EN UN STRING [FORMA ABSURDA]
Código
  1. Private Function Contar_Lineas_A_Lo_Loco(Texto As TextBox)
  2.    'HAGO UN FOR QUE RECORRA TODOS LOS CARACTERES DEL TEXTO
  3.    For I = 0 To Len(Texto.Text)
  4.        'SI EL CARACTER LEIDO ES UN SALTO DE LINEA CON RETORNO DE CARRO, CUENTO UNA LINEA.
  5.        If Mid(Texto.Text, I, 1) = vbCrLf Then
  6.            Contar_Lineas = Contar_Lineas + 1
  7.        End If
  8.    Next
  9. End Function
  10.  


CONTAR LINEAS EN UN STRING [FORMA GROSA]
Código
  1. Private Function Contar_Lineas_A_Lo_Pro(Texto As TextBox) As Long
  2.    Dim Lineas() As String 'Auxiliar donde se guarda los saltos de linea
  3.    'Corto el texto por los saltos de linea....
  4.    Lineas = Split(Texto.Text, vbNewLine)
  5.    'Y luego cuento la dimencion de la matriz
  6.    Contar_Lineas_A_Lo_Pro = UBound(Lineas)
  7. End Function
  8.  



Bueno, eso es todo, espero que te sea de utilidad.
Saludos
« Última modificación: 11 Mayo 2012, 18:39 pm por Deeo Raiser » En línea




"Recuerda siempre que tu propia  resolución de triunfar es mas importante que cualquier otra cosa."
Abraham Lincoln
79137913


Desconectado Desconectado

Mensajes: 1.169


4 Esquinas


Ver Perfil WWW
Re: Borrar última línea de un textbox
« Respuesta #5 en: 11 Mayo 2012, 20:13 pm »

HOLA!!!

...

Mi codigo funciona el problema es que no le puse el End Sub al final por eso no te andaba.

En tu codigo la unica diferencia es que expandiste mi if.

Aparte...

Tu codigo para contar lineas es erroneo, aca abajo lo corregí.

Código
  1. Private Function XLines(TXT As TextBox) As Long
  2.    XLineas = UBound(Split(TXT.Text, vbNewLine))+1
  3. End Function

Primero, mucho codigo sin sentido ahi arriba lo optimice al maximo.

Aparte como el array empieza de 0 siempre tu codigo va a contar una linea menos por eso el +1.

Igual me agrada que haya alguien que se anime a postear codigo, falta gente asi en este subforo.

GRACIAS POR LEER!!!
« Última modificación: 11 Mayo 2012, 20:20 pm por 79137913 » En línea

"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

 79137913                          *Shadow Scouts Team*
Deeo Raiser

Desconectado Desconectado

Mensajes: 22


Se todo Sobre Ti.


Ver Perfil WWW
Re: Borrar última línea de un textbox
« Respuesta #6 en: 11 Mayo 2012, 21:06 pm »

Primero, mucho codigo sin sentido ahi arriba lo optimice al máximo.

La idea es que el código sea fácil y rápidamente legible, en cuanto a "mucho codigo sin sentido", no lo comprendo, el cogido esta y cumple una función, en poner un if en una sola linea no se optimiza nada, mas que ahorrar renglones.
En cuanto a tu código, no solo le falto en End Sub, declaraste un procedimiento y le pasaste parámetros en ves de declarar una función, tampoco devuelve ningún valor, ademas faltan declarar variables. La idea estaba y funcionaba, pero el código estaba incompleto.


Tu codigo para contar lineas es erroneo, aca abajo lo corregí.
Aparte como el array empieza de 0 siempre tu codigo va a contar una linea menos por eso el +1.

Eso es correcto, no lo tuve en cuenta-

Igual me agrada que haya alguien que se anime a postear codigo, falta gente asi en este subforo.

De este foro aprendí mucho y quiero (aunque sean pequeñeces) devolver algo.

Saludos y Gracias Por leer. !!!


En línea




"Recuerda siempre que tu propia  resolución de triunfar es mas importante que cualquier otra cosa."
Abraham Lincoln
raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Borrar última línea de un textbox
« Respuesta #7 en: 11 Mayo 2012, 21:29 pm »

La idea es que el código sea fácil y rápidamente legible, en cuanto a "mucho codigo sin sentido", no lo comprendo, el cogido esta y cumple una función, en poner un if en una sola linea no se optimiza nada, mas que ahorrar renglones.
Eso es subjetivo, aunque depende que tanto lleves programando y ya te acostumbres a expresiones amontonadas :P

Citar
En cuanto a tu código, no solo le falto en End Sub, declaraste un procedimiento y le pasaste parámetros en ves de declarar una función, tampoco devuelve ningún valor, ademas faltan declarar variables. La idea estaba y funcionaba, pero el código estaba incompleto.
Ni idea como estaba el código antes de la edición, pero tampoco hace falta que sea una función, con una simple llamada y ya. No falta ninguna variable

Ademas de que tu código no pusiste la firma de la función :P y sin eso esta linea
Código:
Borrar_Linea = Texto.Text
Esta al pedo :P (y NumeroLinea sin declarar :P)

Ya si quiere mucha performance (a.k.a Editor de codigo o editor (casi procesador) de texto) puede utilizar el Split que gano en los retos y la clase para Concatenar de manera rápida :P
En línea

burbu_1

Desconectado Desconectado

Mensajes: 159


hamen gaoz


Ver Perfil
Re: Borrar última línea de un textbox
« Respuesta #8 en: 11 Mayo 2012, 22:06 pm »

CONTAR LINEAS EN UN STRING [FORMA ABSURDA]
Código
  1. Private Function Contar_Lineas_A_Lo_Loco(Texto As TextBox)
  2.    'HAGO UN FOR QUE RECORRA TODOS LOS CARACTERES DEL TEXTO
  3.    For I = 0 To Len(Texto.Text)
  4.        'SI EL CARACTER LEIDO ES UN SALTO DE LINEA CON RETORNO DE CARRO, CUENTO UNA LINEA.
  5.        If Mid(Texto.Text, I, 1) = vbCrLf Then
  6.            Contar_Lineas = Contar_Lineas + 1
  7.        End If
  8.    Next
  9. End Function
  10.  

la forma no me parece tan absurda, pero tiene algún error  :P

1º En el mid empiezas a contar desde el caracter 0 y debería ser desde el 1, si no te tira error

2º Como tú mismo explicas, buscas 1 salto de linea y 1 retorno de carro.... eso son dos caracteres

3º como te pasó con el código pro, empiezas contando por 0 y no por 1
Código
  1. Private Function Contar_Lineas_A_Lo_Loco(Texto As TextBox)
  2.    Contar_Lineas =  1
  3.    'HAGO UN FOR QUE RECORRA TODOS LOS CARACTERES DEL TEXTO
  4.    For I = 1 To Len(Texto.Text)
  5.        'SI EL CARACTER LEIDO ES UN SALTO DE LINEA CON RETORNO DE CARRO, CUENTO UNA LINEA.
  6.        If Mid(Texto.Text, I, 2) = vbCrLf Then
  7.            Contar_Lineas = Contar_Lineas + 1
  8.        End If
  9.    Next
  10. End Function
  11.  


Por último en ambos códigos añadís al final del texto original una nueva linea... y si llamas varias veces a la función se van a ir acumulando....
Código
  1. texto.text = left( texto.text,  len(texto.text)-2 )


Saludos.
En línea

79137913


Desconectado Desconectado

Mensajes: 1.169


4 Esquinas


Ver Perfil WWW
Re: Borrar última línea de un textbox
« Respuesta #9 en: 11 Mayo 2012, 23:09 pm »

HOLA!!!

La idea es que el código sea fácil y rápidamente legible, en cuanto a "mucho codigo sin sentido", no lo comprendo, el cogido esta y cumple una función, en poner un if en una sola linea no se optimiza nada, mas que ahorrar renglones.
En cuanto a tu código, no solo le falto en End Sub, declaraste un procedimiento y le pasaste parámetros en ves de declarar una función, tampoco devuelve ningún valor, ademas faltan declarar variables. La idea estaba y funcionaba, pero el código estaba incompleto.

Empiezo enumerar...

Codigo sin sentido por que:
Código
  1.    Dim Lineas() As String 'Auxiliar donde se guardan las lineas
  2.    Dim I  As Long 'Correcto
  3.  
  4.    Lineas = Split(Texto.Text, vbNewLine)
  5.  
  6.    'Borro el contenido de Texto
  7.    Texto.Text = vbNullString
  8.  
  9.    For I = 0 To UBound(Lineas)
  10.        If I <> NumeroLinea Then
  11.            'usas 3 renglones cuando se deberia usar uno ya que solo se hace una llamada
  12.            Texto.Text = Texto.Text & Lineas(I) & vbCrLf
  13.        End If
  14.    Next
  15.    Borrar_Linea = Texto.Text ' sin sentido totalmente

y por este otro:
Código
  1. Private Function Contar_Lineas_A_Lo_Pro(Texto As TextBox) As Long
  2.    Dim Lineas() As String' gastas un array mas osea mas memoria y 3 lineas en vez de 1 como abajo
  3.    Lineas = Split(Texto.Text, vbNewLine)
  4.    'Y luego cuento la dimencion de la matriz
  5.    Contar_Lineas_A_Lo_Pro = UBound(Lineas)
  6. End Function
contra:
Código
  1. Private Function XLines(TXT As TextBox) As Long
  2.    XLineas = UBound(Split(TXT.Text, vbNewLine))+1
  3. End Function

Para elmiminar una linea no es necesario que sea una funcion, un procedimiento alcanza ya que no se debe devlver retorno alguno.

PD: Raul el codigo antes de la modificacion era asi:
Código
  1. Private sub DeleteLine (XLine as long, TXT as TextBox)
  2. Dim Aux() as string
  3. Aux = Split(TXT.Text, VbNewLine)
  4. Txt.text=Vbnullstring
  5. For X = 0 to ubound(aux)
  6.    if X <> XLine then txt.text = txt.text & Aux(x) & VbNewLine
  7. Next

GRACIAS POR LEER!!!
En línea

"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

 79137913                          *Shadow Scouts Team*
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines