Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Erika Vega en 24 Febrero 2009, 23:53 pm



Título: Se podra?
Publicado por: Erika Vega en 24 Febrero 2009, 23:53 pm
Un problema mas que tengo chicos, Lo que deseo es saber si se puede realizar lo siguiente en visual basic.

por ejemplo:

en un archivo de texto tengo lineas como esta

Citar
usuario = felipito  ;Nombre de usuario
password = 1234  ;password del usuario
rango = 3  ;Rango de usuario: 1= admin, 2=normal, 3=mod
...
...
...

Si se dan cuenta los comentarios se definen a partir del "punto y coma"

Lo que deseo es colocar en un listview estos datos por separados de manera ordenada

Citar
[liNEA] [TAG] = [ATRIBUTO]  [; COMENTARIO]

Código
  1. Set subs = ListView1.ListItems.Add(, , LINEA)
  2.          subs.SubItems(1) = TAG
  3.          subs.SubItems(2) = ATRIBUTO
  4.          subs.SubItems(2) = COMENTARIO
  5.  
Se como agregar los datos al listview, pero no logro separarlos y colocarlos como quiero.


 


Título: Re: Se podra?
Publicado por: el_c0c0 en 25 Febrero 2009, 00:09 am
lo arreglas con split:
Código
  1. Dim strItems1() as String
  2. Dim strItems2() as String
  3. strItems1= split(strLinea, "=") '0=tag
  4. strItems2 = split(strItems1(1), ";") '0=contenido, 1=comentario
  5.  

saludos


Título: Re: Se podra?
Publicado por: Erika Vega en 25 Febrero 2009, 06:59 am
lo arreglas con split:
Código
  1. Dim strItems1() as String
  2. Dim strItems2() as String
  3. strItems1= split(strLinea, "=") '0=tag
  4. strItems2 = split(strItems1(1), ";") '0=contenido, 1=comentario
  5.  

saludos
esta muy bien pero me sale el tipico error que el indice esta fuera del intervalo.


Título: Re: Se podra?
Publicado por: vivachapas en 25 Febrero 2009, 15:48 pm
postea una parte del codigo..
o asi tal cual es como lo pusiste??
si lo pusiste asi el error es xq no lo metiste en ningun evento :S


Título: Re: Se podra?
Publicado por: Erika Vega en 25 Febrero 2009, 16:06 pm
Código
  1. Dim Linea As String
  2. Dim item As ListItem
  3. Dim spt1() As String
  4. Dim spt2() As String
  5. Dim i As Integer
  6.  
  7.    PathArchivo = App.Path & "\datos.txt"
  8.    Open PathArchivo For Input As #1
  9.  
  10.    While Not EOF(1)
  11.    Line Input #1, Linea
  12.  
  13.    spt1 = Split(Linea, ";")
  14.    spt2 = Split(spt1(0), "=")
  15.  
  16.    Set item = ListView.ListItems.Add(, , spt2(0))
  17.        item.SubItems(1) = spt2(1)
  18.     Wend
  19.    Close
  20.  
  21. Exit Sub
  22. errsub:
  23. MsgBox Err.Description, vbCritical

Ahi esta, haber si me das una manito


Título: Re: Se podra?
Publicado por: byway en 25 Febrero 2009, 19:47 pm
existen muchas maneras de cargar un texto en un listview de forma ordenada:
Código
  1. Sub abre_lista()
  2.  
  3. Dim itm As ListItem
  4. Dim a, b, c As String
  5.    Open App.Path & "\Data.txt" For Input As #1
  6.    Do Until EOF(2)
  7.    Input #1, a, b, c
  8.              Set itm = lv1.ListItems.Add(, , a)
  9.              itm.SubItems(1) = b
  10.              itm.SubItems(2) = c
  11.    Loop
  12.    Close #1
  13.  
  14. End Sub

y claro las lineas del texto deben de estar separados :

Código:
"usuario","password","rango"

espero te sirva... ;D

saludos.

edit: los datos solo eran 3 .. puse para 4 anteriormente... ya esta corregido  ;D ;D


Título: Re: Se podra?
Publicado por: Erika Vega en 25 Febrero 2009, 20:53 pm
existen muchas maneras de cargar un texto en un listview de forma ordenada:
Código
  1. Sub abre_lista()
  2.  
  3. Dim itm As ListItem
  4. Dim a, b, c As String
  5.    Open App.Path & "\Data.txt" For Input As #1
  6.    Do Until EOF(2)
  7.    Input #1, a, b, c
  8.              Set itm = lv1.ListItems.Add(, , a)
  9.              itm.SubItems(1) = b
  10.              itm.SubItems(2) = c
  11.    Loop
  12.    Close #1
  13.  
  14. End Sub

y claro las lineas del texto deben de estar separados :

Código:
"usuario","password","rango"

espero te sirva... ;D

saludos.

edit: los datos solo eran 3 .. puse para 4 anteriormente... ya esta corregido  ;D ;D

Muy bien, pero el archivo de texto es como dije anteriormente:

Citar
LLAVE=VALOR ;COMENTARIO

Si lo pudiera separar todos con comas funcionaria, pero como digo no puedo cambiar la estructura del txt.





Título: Re: Se podra?
Publicado por: ‭‭‭‭jackl007 en 25 Febrero 2009, 21:24 pm
como no se va a poder, es muy facil hacer lo que pides; VB es mucho mas pontente de lo que creees....

tu te encargas de que se abra el archivo leyendo linea a linea (mira los posts anteriores, por alli esta), y esto se va guardando en la variable: linea ... y se obtienen todos los valores
Código
  1. Dim Llave, Valor, Comentario As String
  2. Dim linea As String
  3.  
  4. linea = "Path=C:\WINDOWS;Ruta de Windows"
  5.  
  6. Llave = Trim(Mid(linea, 1, InStr(1, linea, "=") - 1))
  7. Valor = Trim(Mid(linea, InStr(1, linea, "=") + 1, InStr(1, linea, ";") - InStr(1, linea, "=") - 1))
  8. Comentario = Trim(Mid(linea, InStr(1, linea, ";") + 1))
  9.  
  10. MsgBox Llave
  11. MsgBox Valor
  12. MsgBox Comentario
  13.  


Título: Re: Se podra?
Publicado por: Erika Vega en 25 Febrero 2009, 22:31 pm
Esta muy bien, pero mi problema no es separarlos sino meterlos al listview, tu metodo es muy bueno pero ocasiona un error a la hora de tratar de meterlos al listview.

De todas formas gracias por el codigo, los separa bien si lo muestras en un mensaje pero para el listview no funciona.

Código
  1. PathArchivo = CD1.FileName
  2.  
  3.    Open PathArchivo For Input As #1
  4.  
  5.    While Not EOF(1)
  6.    Line Input #1, linea
  7.  
  8.   llave = Trim(Mid(linea, 1, InStr(1, linea, "=") - 1))
  9.   valor = Trim(Mid(linea, InStr(1, linea, "=") + 1, InStr(1, linea, ";") - InStr(1, linea, "=") - 1))
  10.   comentario = Trim(Mid(linea, InStr(1, linea, ";") + 1))
  11.  
  12.    Set item = ListView.ListItems.Add(, , llave)
  13.        item.SubItems(1) = valor
  14.        item.SubItems(2) = comentario
  15.  
  16.    Wend
  17.    Close #1


Título: Re: Se podra?
Publicado por: Dessa en 26 Febrero 2009, 00:01 am

Muy bien, pero el archivo de texto es como dije anteriormente:

Citar
LLAVE=VALOR ;COMENTARIO

Si lo pudiera separar todos con comas funcionaria, pero como digo no puedo cambiar la estructura del txt.


No cambies la extructura del txt,  crea una cadena con el txt y modificala

Código:

Dim cadena$: cadena = "usuario = felipito  ;Nombre de usuario" + vbNewLine + "password = 1234  ;password del usuario" + vbNewLine + "rango = 3  ;Rango de usuario: 1= admin, 2=normal, 3=mod"

MsgBox cadena

cadena = Replace(cadena, "usuario =", "usuario ,")
cadena = Replace(cadena, "password =", "password ,")
cadena = Replace(cadena, "rango =", "rango ,")
cadena = Replace(cadena, ";", ",")
cadena = Replace(cadena, "1= admin, 2=normal, 3=mod", "1= admin  2=normal  3=mod")
MsgBox cadena


Saludos





Título: Re: Se podra?
Publicado por: seba123neo en 26 Febrero 2009, 02:14 am
Esta muy bien, pero mi problema no es separarlos sino meterlos al listview, tu metodo es muy bueno pero ocasiona un error a la hora de tratar de meterlos al listview.

De todas formas gracias por el codigo, los separa bien si lo muestras en un mensaje pero para el listview no funciona.

Código
  1. PathArchivo = CD1.FileName
  2.  
  3.    Open PathArchivo For Input As #1
  4.  
  5.    While Not EOF(1)
  6.    Line Input #1, linea
  7.  
  8.   llave = Trim(Mid(linea, 1, InStr(1, linea, "=") - 1))
  9.   valor = Trim(Mid(linea, InStr(1, linea, "=") + 1, InStr(1, linea, ";") - InStr(1, linea, "=") - 1))
  10.   comentario = Trim(Mid(linea, InStr(1, linea, ";") + 1))
  11.  
  12.    Set item = ListView.ListItems.Add(, , llave)
  13.        item.SubItems(1) = valor
  14.        item.SubItems(2) = comentario
  15.  
  16.    Wend
  17.    Close #1

ese codigo asi como esta, lo probe y anda perfecto...carga los datos bien en el lsitview...


Título: Re: Se podra?
Publicado por: Novlucker en 26 Febrero 2009, 02:30 am
No será que de vez en cuando en alguna línea no se cumple la estructura? como ser una línea en blanco?  :silbar:

Saludos


Título: Re: Se podra?
Publicado por: ‭‭‭‭jackl007 en 26 Febrero 2009, 02:32 am
yo no se porque te haces problemas, el codigo que te postee da solucion a tus problemas ...
lo unico que no  hice es agregar lo que tu ya supuestamente sabias...
Para que no provoque errores, puedes agregar un "On Error goto Error" y abajo defines que las variables las setee vacias... y tienes todoooooooooo liiistoo, espero que te sea util

PD: procura declarar bien las variables antes de usarlas, es un buen habito de programacion


Título: Re: Se podra?
Publicado por: Erika Vega en 26 Febrero 2009, 16:43 pm
No será que de vez en cuando en alguna línea no se cumple la estructura? como ser una línea en blanco?  :silbar:

Saludos
yo no se porque te haces problemas, el codigo que te postee da solucion a tus problemas ...
lo unico que no  hice es agregar lo que tu ya supuestamente sabias...
Para que no provoque errores, puedes agregar un "On Error goto Error" y abajo defines que las variables las setee vacias... y tienes todoooooooooo liiistoo, espero que te sea util

PD: procura declarar bien las variables antes de usarlas, es un buen habito de programacion

Tenian razon, lo que pasa es que el txt tenia lineas que estaban vacias y otras que no cumplian con la estructura, he ahi el problema.

Gracias por la ayuda, ya lo solucione aunque.