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]
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.
lo arreglas con split:
Dim strItems1() as String
Dim strItems2() as String
strItems1= split(strLinea, "=") '0=tag
strItems2 = split(strItems1(1), ";") '0=contenido, 1=comentario
saludos
Cita de: el_c0c0 en 25 Febrero 2009, 00:09 AM
lo arreglas con split:
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.
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
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
existen muchas maneras de cargar un texto en un listview de forma ordenada:
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
Cita de: byway en 25 Febrero 2009, 19:47 PM
existen muchas maneras de cargar un texto en un listview de forma ordenada:
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.
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
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
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.
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
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
Cita de: 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.
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
ese codigo asi como esta, lo probe y anda perfecto...carga los datos bien en el lsitview...
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
Cita de: 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
Cita de: 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
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.