Se podra?

Iniciado por Erika Vega, 24 Febrero 2009, 23:53 PM

0 Miembros y 1 Visitante están viendo este tema.

Erika Vega

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

Citarusuario = 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 (vb) [Seleccionar]
Set subs = ListView1.ListItems.Add(, , LINEA)
          subs.SubItems(1) = TAG
          subs.SubItems(2) = ATRIBUTO
          subs.SubItems(2) = COMENTARIO

Se como agregar los datos al listview, pero no logro separarlos y colocarlos como quiero.



el_c0c0

lo arreglas con split:
Código (vb) [Seleccionar]

Dim strItems1() as String
Dim strItems2() as String
strItems1= split(strLinea, "=") '0=tag
strItems2 = split(strItems1(1), ";") '0=contenido, 1=comentario


saludos
'-     coco
"Te voy a romper el orto"- Las hemorroides

Erika Vega

Cita de: el_c0c0 en 25 Febrero 2009, 00:09 AM
lo arreglas con split:
Código (vb) [Seleccionar]

Dim strItems1() as String
Dim strItems2() as String
strItems1= split(strLinea, "=") '0=tag
strItems2 = split(strItems1(1), ";") '0=contenido, 1=comentario


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

vivachapas

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

Erika Vega

Código (vb) [Seleccionar]
Dim Linea As String
Dim item As ListItem
Dim spt1() As String
Dim spt2() As String
Dim i As Integer
   
    PathArchivo = App.Path & "\datos.txt"
    Open PathArchivo For Input As #1
   
    While Not EOF(1)
    Line Input #1, Linea
   
    spt1 = Split(Linea, ";")
    spt2 = Split(spt1(0), "=")
   
    Set item = ListView.ListItems.Add(, , spt2(0))
        item.SubItems(1) = spt2(1)
     Wend
    Close

Exit Sub
errsub:
MsgBox Err.Description, vbCritical


Ahi esta, haber si me das una manito

byway

#5
existen muchas maneras de cargar un texto en un listview de forma ordenada:
Código (vb) [Seleccionar]
Sub abre_lista()

Dim itm As ListItem
Dim a, b, c As String
    Open App.Path & "\Data.txt" For Input As #1
    Do Until EOF(2)
    Input #1, a, b, c
              Set itm = lv1.ListItems.Add(, , a)
              itm.SubItems(1) = b
              itm.SubItems(2) = c
    Loop
    Close #1
   
End Sub


y claro las lineas del texto deben de estar separados :

"usuario","password","rango"

espero te sirva... ;D

saludos.

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

Erika Vega

Cita de: byway en 25 Febrero 2009, 19:47 PM
existen muchas maneras de cargar un texto en un listview de forma ordenada:
Código (vb) [Seleccionar]
Sub abre_lista()

Dim itm As ListItem
Dim a, b, c As String
    Open App.Path & "\Data.txt" For Input As #1
    Do Until EOF(2)
    Input #1, a, b, c
              Set itm = lv1.ListItems.Add(, , a)
              itm.SubItems(1) = b
              itm.SubItems(2) = c
    Loop
    Close #1
   
End Sub


y claro las lineas del texto deben de estar separados :

"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:

CitarLLAVE=VALOR ;COMENTARIO

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




‭‭‭‭jackl007

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 (vb) [Seleccionar]

Dim Llave, Valor, Comentario As String
Dim linea As String

linea = "Path=C:\WINDOWS;Ruta de Windows"

Llave = Trim(Mid(linea, 1, InStr(1, linea, "=") - 1))
Valor = Trim(Mid(linea, InStr(1, linea, "=") + 1, InStr(1, linea, ";") - InStr(1, linea, "=") - 1))
Comentario = Trim(Mid(linea, InStr(1, linea, ";") + 1))

MsgBox Llave
MsgBox Valor
MsgBox Comentario

Erika Vega

#8
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 (vb) [Seleccionar]
PathArchivo = CD1.FileName
   
    Open PathArchivo For Input As #1
   
    While Not EOF(1)
    Line Input #1, linea
   
   llave = Trim(Mid(linea, 1, InStr(1, linea, "=") - 1))
   valor = Trim(Mid(linea, InStr(1, linea, "=") + 1, InStr(1, linea, ";") - InStr(1, linea, "=") - 1))
   comentario = Trim(Mid(linea, InStr(1, linea, ";") + 1))

    Set item = ListView.ListItems.Add(, , llave)
        item.SubItems(1) = valor
        item.SubItems(2) = comentario
 
    Wend
    Close #1

Dessa

#9
Cita de: Erika Vega en 25 Febrero 2009, 20:53 PM

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

CitarLLAVE=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



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



Adrian Desanti