Programación General > Visual Basic para principiantes

 DE LIST1 A TXT

(1/3) > >>

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

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa