Programación General > Visual Basic para principiantes
DE LIST1 A TXT
bobo:
Buenas, ncesito guaradar info de un list a un txt como lo hago.- Expliquenlo como para mi "bobo"
gracias
m0skit0:
Con txt supongo que te refieres a un fichero de texto. Sé más explícito la próxima vez, por favor.
Para recorrer la lista puedes hacer:
--- Código: Visual Basic ---For i=1 to List.ListCount Debug.Print List.List(i)Next i
Verás que te salen los datos en la ventana de inmediato de VB6.
Para crear un fichero de texto, puedes hacer:
--- Código: Visual Basic ---Dim Fichero_Texto As IntegerDim Ruta_Fichero As StringFichero_Texto = FreeFile()Open Ruta_Fichero For Output As Fichero_Texto
Siendo Ruta_Fichero la ruta del fichero a crear. Para escribir una línea:
--- Código: Visual Basic ---Dim Datos As StringDatos = "Cosas que escribir"Write Fichero_Texto, Datos
Cuando termines, no olvides cerrar el fichero con
--- Código: Visual Basic ---Close Fichero_Texto
Espero que con esto te haya aclarado algo. Un saludo.
Jimbenit:
--- Cita de: "bobo" ---Buenas, ncesito guaradar info de un list a un txt como lo hago.- Expliquenlo como para mi "bobo"
gracias
--- Fin de la cita ---
Bueno yo te entiendo que tienes unos datos en un ListBox (Cuadro de lista) y los quieres guardar en un bloc de Notas (archivo con extension *.txt).
Te regalare dos de mis "super funciones" :lol: , estas funciones colocalas en un Modulo Estandar:, Te serviran para cualquier proyecto que hagas
--- Código: Text ---Function LeerDatoMATRIZ(Colum As Long, Fila As Long, RutaArchivo As String) As Variant'Lee datos de una cadena separada por comas.. ejemplo:' xxxxx, xxxxx, xxxxx , xxxxx, etc...Dim NumLine As LongDim Cadena1 As StringDim Cadena As StringDim Dato As Variant If Dir(RutaArchivo) = "" Then 'Comprueba si existe archivo, en caso de no existir, lo crea. Open RutaArchivo For Output As #1 Print #1, " " Close #1End If Open RutaArchivo For Input As #1 'Copia la fila completa en la variable cadenaWhile Not EOF(1) Line Input #1, Cadena1 NumLine = NumLine + 1 If NumLine = Fila Then Cadena = Cadena1 End IfWendClose #1 Dim NumLet As Long Dim Cont As Long Dim Letr As String Dim PosComas() As Long Dim NumCarac As Long NumLet = Len(Cadena) For i = 1 To NumLet 'Cuenta las comas dentro de la cadena Letr = Mid(Cadena, i, 1) If Asc(Letr) = 44 Then Cont = Cont + 1 End If Next i If Colum > Cont + 1 Then Exit Function 'Columna vacia ReDim PosComas(Cont) Cont = 0 For i = 1 To NumLet 'Coloca las posiciones de las comas dentro del vector Letr = Mid(Cadena, i, 1) If Asc(Letr) = 44 Then Cont = Cont + 1 PosComas(Cont) = i End If Next i If Colum = UBound(PosComas()) + 1 Then 'Escribe el dato buscado en la variable dato Dato = Mid(Cadena, PosComas(Colum - 1) + 1) Else Dato = Mid(Cadena, PosComas(Colum - 1) + 1, PosComas(Colum) - 1 - PosComas(Colum - 1)) End If 'El siguiente bloque de código elimina las comillas 'del principio y final de la variable Dato. NumLet = Len(Dato) If Left(Dato, 1) = Chr(34) Then Dato = Mid(Dato, 2) End If NumLet = Len(Dato) If Right(Dato, 1) = Chr(34) Then Dato = Mid(Dato, 1, NumLet - 1) End If LeerDatoMATRIZ = Dato End Function Sub EscribirDatoMATRIZ(Colum As Long, Fila As Long, Dato As Variant, RutaArchivo As String)'Guarda datos en un bloc notas en forma de comas... utiliza el bloc'como una matriz ordenada por filas y columnas... [Mayo 5 / 2008] Dim Contador As DoubleDim Vector() As VariantDim Caracter As StringDim Max As DoubleDim Linea As LongDim Cadena As StringDim NumLet As LongDim Letr As StringDim Cont As LongDim PosComas() As LongDim Pedazo1 As StringDim Pedazo2 As StringDim Comas_Add As Long If Dir(RutaArchivo) = "" Then 'Comprueba si existe archivo, en caso de no existir, lo crea. Open RutaArchivo For Output As #1 Print #1, " " Close #1End If Linea = Fila For j = 1 To 2 'Introduce todas las lineas del Bloc notas en un Vector llamado Vector() Open RutaArchivo For Input As #1 While Not EOF(1) 'Cuenta las lineas del Bloc Notas Line Input #1, Caracter i = i + 1 If j = 1 Then Contador = i ElseIf j = 2 Then 'Si j = 2 , se escriben las lineas dentro del vector Vector(i) = Caracter End If Wend Close #1 If j = 1 Then If Linea > Contador Then 'Define el tamaño del vector ReDim Vector(1 To Linea) Max = Linea Else ReDim Vector(1 To Contador) Max = Contador End If i = 0 End IfNext j For i = 1 To Max 'Obtiene la fila en string separada por comas If i = Fila Then Cadena = Vector(i) End IfNext i 'Obtención de las posiciones de las comas'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ NumLet = Len(Cadena) For i = 1 To NumLet 'Cuenta las comas dentro de la cadena Letr = Mid(Cadena, i, 1) If Asc(Letr) = 44 Then Cont = Cont + 1 End If Next i If Colum > Cont + 1 Then 'Columna vacia Comas_Add = Colum - (Cont + 1) For i = 1 To Comas_Add Cadena = Cadena & ", " Next i Cont = Colum - 1 End If NumLet = Len(Cadena) ReDim PosComas(Cont) Cont = 0 For i = 1 To NumLet 'Coloca las posiciones de las comas dentro del vector Letr = Mid(Cadena, i, 1) If Asc(Letr) = 44 Then Cont = Cont + 1 PosComas(Cont) = i End If Next i'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 'Añadiendo el dato a la cadena [Elimina el dato anterior en esa posición]If Cont = 0 Then Cadena = DatoElseIf Colum = 1 Then 'Coloca el dato al principio Cadena = Dato & Mid(Cadena, PosComas(1))ElseIf Colum = UBound(PosComas()) + 1 Then 'Coloca el dato al final Cadena = Mid(Cadena, 1, PosComas(Colum - 1)) & DatoElse Pedazo1 = Mid(Cadena, 1, PosComas(Colum - 1)) Pedazo2 = Mid(Cadena, PosComas(Colum)) Cadena = Pedazo1 & Dato & Pedazo2End If 'Escribiendo en el Bloc NotasOpen RutaArchivo For Output As #1For i = 1 To Max If i = Linea Then Vector(i) = Cadena Print #1, Vector(i) Else Print #1, Vector(i) End IfNext iClose #1 End Sub
A continuacion coloca esto en el evento que quieras, por ejemplo, en un CommandButton1_Click:
--- Código: Text ---Private Sub Command1_Click()Dim i As LongDim Ruta As String Ruta = "C:MiTexto.txt" 'Dale una direccion valida de ruta 'Este "For" lee los elementos de tu Lista y los escribe en un bloc de notasFor i = 0 To List1.ListCount Call EscribirDatoMATRIZ(1, i + 1, List1.List(i), Ruta)Next i'Analiza esta funcion, que es capaz de leer datos de un bloc'de notas que este ordenado por filas y columnas separadas por comas'Comentario: NO UTILIZAR ESTE PROCEDIMIENTO CUANDO EL ARCHIVO DE LECTURA DEL BLOC DE NOTAS'CONTENGAN MUCHAS FILAS O MUCHAS COLUMNAS SEPARADAS POR COMAS (mas de 10 mil filas y/o columnas)'pero para aplicaciones sencillas, como guardar una configuracion de un formulario,'alamcenar algunos datos de un cuadro de lista, o cosas similares es excelente End Sub
Si lo que quieres es leer algun dato de ese bloc de notas, te sugiero que analices la funcion: LeerDatoMATRIZ que tambien te deje
Bueno, espero que te halla servido, saludos y te invito a que estes conectado a este foro. :lol:
Nota:
Yo quiero mucho a Toph
m0skit0:
--- Cita de: "Jimbenit" ---Te regalare dos de mis "super funciones"
--- Fin de la cita ---
Me parece loable tu actitud, pero muy poco didáctica. Así sólo enseñas a usar copiar-pegar y no a programar. Os aconsejo que si copiáis funciones, por lo menos os toméis el tiemp de entenderlas. Y pon todas las declaraciones juntas, sino no hay quien lea eso.
--- Cita de: "Jimbenit" ---Open RutaArchivo For Output As #1
--- Fin de la cita ---
No uses números fijos (#1) ¿quién sabe si ese descriptor está siendo usado? Usa FreeFile()
--- Cita de: "Jimbenit" ---# que es capaz de leer datos de un bloc
# 'de notas que este ordenado por filas y columnas separadas por comas
# 'Comentario: NO UTILIZAR ESTE PROCEDIMIENTO CUANDO EL ARCHIVO DE LECTURA DEL BLOC DE NOTAS
# 'CONTENGAN MUCHAS FILAS O MUCHAS COLUMNAS SEPARADAS POR COMAS (mas de 10 mil filas y/o columnas)
--- Fin de la cita ---
Por cierto, las cosas no se guardan en el bloc de notas, sino en un fichero de texto, que puedes abrir con el programa que te dé la gana. No confundamos las cosas. Y puedes escribir todos los datos que se te antojen, eso sí, si son muchas líneas no uses el Bloc de Notas de Windows para ojearlo, que se cuelga. El VB no tendrá problemas en leerlo, aunque sean millones de líneas.
Saludos
Jimbenit:
--- Citar ---Os aconsejo que si copiáis funciones, por lo menos os toméis el tiemp de entenderlas
--- Fin de la cita ---
Las funciones que publico son creadas por mi, pero ya se por que lo dices, lo dices por que a tu pregunta sobre el archivo .INI no respondi tu pregunta, cierto??...
(aun que no todas las funciones que publico son creaciones mias, pero si todas estan, por lo menos personalizadas por mi, de tal manera que solo sea necesario copiar y pegar, (recuerda que estamos en un foro de Visual Basic para principiantes y lo mas seguro es que las personas que preguntan saben muy poco de viasual basic)
Hey, Moskito, me caes bien,... please, no discutamos ... la finalidad es ayudar a una persona... :good:
Lo hicimos, o no???.... ya terminó...... ^_^ ...
Nota:
Yo quiero mucho a Toph
Navegación
[#] Página Siguiente
Ir a la versión completa