• Jueves 7 de Noviembre de 2024, 23:49

Autor Tema:  DE LIST1 A TXT  (Leído 3690 veces)

bobo

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
DE LIST1 A TXT
« en: Jueves 23 de Octubre de 2008, 02:49 »
0
Buenas, ncesito guaradar info de un list a un txt como lo hago.- Expliquenlo como para mi "bobo"
gracias

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: DE LIST1 A TXT
« Respuesta #1 en: Jueves 23 de Octubre de 2008, 06:52 »
0
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
  1. For i=1 to List.ListCount
  2.     Debug.Print List.List(i)
  3. Next i
  4.  

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
  1. Dim Fichero_Texto As Integer
  2. Dim Ruta_Fichero As String
  3. Fichero_Texto = FreeFile()
  4. Open Ruta_Fichero For Output As Fichero_Texto
  5.  

Siendo Ruta_Fichero la ruta del fichero a crear. Para escribir una línea:

Código: Visual Basic
  1. Dim Datos As String
  2. Datos = "Cosas que escribir"
  3. Write Fichero_Texto, Datos
  4.  

Cuando termines, no olvides cerrar el fichero con

Código: Visual Basic
  1. Close Fichero_Texto
  2.  

Espero que con esto te haya aclarado algo. Un saludo.

Jimbenit

  • Miembro MUY activo
  • ***
  • Mensajes: 269
  • Nacionalidad: co
    • Ver Perfil
    • http://ingenieriacivil.foroactivo.com
Re: DE LIST1 A TXT
« Respuesta #2 en: Jueves 23 de Octubre de 2008, 16:07 »
0
Cita de: "bobo"
Buenas, ncesito guaradar info de un list a un txt como lo hago.- Expliquenlo como para mi "bobo"
gracias

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
  1. Function LeerDatoMATRIZ(Colum As Long, Fila As Long, RutaArchivo As String) As Variant
  2. 'Lee datos de una cadena separada por comas.. ejemplo:
  3. ' xxxxx, xxxxx, xxxxx , xxxxx, etc...
  4. Dim NumLine As Long
  5. Dim Cadena1 As String
  6. Dim Cadena As String
  7. Dim Dato As Variant
  8.  
  9. If Dir(RutaArchivo) = "" Then       'Comprueba si existe archivo, en caso de no existir, lo crea.
  10.     Open RutaArchivo For Output As #1
  11.     Print #1, " "
  12.     Close #1
  13. End If
  14.    
  15.    
  16.  
  17. Open RutaArchivo For Input As #1        'Copia la fila completa en la variable cadena
  18. While Not EOF(1)
  19.     Line Input #1, Cadena1
  20.     NumLine = NumLine + 1
  21.     If NumLine = Fila Then
  22.         Cadena = Cadena1
  23.     End If
  24. Wend
  25. Close #1
  26.        
  27.         Dim NumLet As Long
  28.         Dim Cont As Long
  29.         Dim Letr As String
  30.         Dim PosComas() As Long
  31.         Dim NumCarac As Long
  32.  
  33.         NumLet = Len(Cadena)
  34.         For i = 1 To NumLet     'Cuenta las comas dentro de la cadena
  35.             Letr = Mid(Cadena, i, 1)
  36.             If Asc(Letr) = 44 Then
  37.                 Cont = Cont + 1
  38.             End If
  39.         Next i
  40.  
  41.         If Colum > Cont + 1 Then Exit Function  'Columna vacia
  42.  
  43.         ReDim PosComas(Cont)
  44.         Cont = 0
  45.         For i = 1 To NumLet     'Coloca las posiciones de las comas dentro del vector
  46.             Letr = Mid(Cadena, i, 1)
  47.             If Asc(Letr) = 44 Then
  48.                 Cont = Cont + 1
  49.                 PosComas(Cont) = i
  50.             End If
  51.         Next i
  52.  
  53.         If Colum = UBound(PosComas()) + 1 Then         'Escribe el dato buscado en la variable dato
  54.             Dato = Mid(Cadena, PosComas(Colum - 1) + 1)
  55.         Else
  56.             Dato = Mid(Cadena, PosComas(Colum - 1) + 1, PosComas(Colum) - 1 - PosComas(Colum - 1))
  57.         End If
  58.    
  59.             'El siguiente bloque de código elimina las comillas
  60.             'del principio y final de la variable Dato.
  61.         NumLet = Len(Dato)
  62.         If Left(Dato, 1) = Chr(34) Then
  63.             Dato = Mid(Dato, 2)
  64.         End If
  65.         NumLet = Len(Dato)
  66.         If Right(Dato, 1) = Chr(34) Then
  67.             Dato = Mid(Dato, 1, NumLet - 1)
  68.         End If
  69.        
  70.  
  71. LeerDatoMATRIZ = Dato
  72.  
  73.  
  74. End Function
  75.  
  76.  
  77.  
  78. Sub EscribirDatoMATRIZ(Colum As Long, Fila As Long, Dato As Variant, RutaArchivo As String)
  79. 'Guarda datos en un bloc notas en forma de comas... utiliza el bloc
  80. 'como una matriz ordenada por filas y columnas... [Mayo 5 / 2008]
  81.  
  82. Dim Contador As Double
  83. Dim Vector() As Variant
  84. Dim Caracter As String
  85. Dim Max As Double
  86. Dim Linea As Long
  87. Dim Cadena As String
  88. Dim NumLet As Long
  89. Dim Letr As String
  90. Dim Cont As Long
  91. Dim PosComas() As Long
  92. Dim Pedazo1 As String
  93. Dim Pedazo2 As String
  94. Dim Comas_Add As Long
  95.  
  96. If Dir(RutaArchivo) = "" Then           'Comprueba si existe archivo, en caso de no existir, lo crea.
  97.     Open RutaArchivo For Output As #1
  98.     Print #1, " "
  99.     Close #1
  100. End If
  101.  
  102. Linea = Fila
  103.  
  104. For j = 1 To 2          'Introduce todas las lineas del Bloc notas en un Vector llamado Vector()
  105.     Open RutaArchivo For Input As #1
  106.     While Not EOF(1)                'Cuenta las lineas del Bloc Notas
  107.         Line Input #1, Caracter
  108.         i = i + 1
  109.         If j = 1 Then
  110.             Contador = i
  111.         ElseIf j = 2 Then       'Si j = 2 , se escriben las lineas dentro del vector
  112.             Vector(i) = Caracter
  113.         End If
  114.     Wend
  115.     Close #1
  116.     If j = 1 Then
  117.         If Linea > Contador Then        'Define el tamaño del vector
  118.             ReDim Vector(1 To Linea)
  119.             Max = Linea
  120.         Else
  121.             ReDim Vector(1 To Contador)
  122.             Max = Contador
  123.         End If
  124.         i = 0
  125.     End If
  126. Next j
  127.  
  128.  
  129. For i = 1 To Max        'Obtiene la fila en string separada por comas
  130.     If i = Fila Then
  131.         Cadena = Vector(i)
  132.     End If
  133. Next i
  134.  
  135.             'Obtención de las posiciones de las comas
  136. '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  137.         NumLet = Len(Cadena)
  138.         For i = 1 To NumLet     'Cuenta las comas dentro de la cadena
  139.             Letr = Mid(Cadena, i, 1)
  140.             If Asc(Letr) = 44 Then
  141.                 Cont = Cont + 1
  142.             End If
  143.         Next i
  144.  
  145.         If Colum > Cont + 1 Then        'Columna vacia
  146.             Comas_Add = Colum - (Cont + 1)
  147.             For i = 1 To Comas_Add
  148.                 Cadena = Cadena & ", "
  149.             Next i
  150.             Cont = Colum - 1
  151.         End If
  152.        
  153.         NumLet = Len(Cadena)
  154.         ReDim PosComas(Cont)
  155.         Cont = 0
  156.         For i = 1 To NumLet     'Coloca las posiciones de las comas dentro del vector
  157.             Letr = Mid(Cadena, i, 1)
  158.             If Asc(Letr) = 44 Then
  159.                 Cont = Cont + 1
  160.                 PosComas(Cont) = i
  161.             End If
  162.         Next i
  163. '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  164.  
  165. 'Añadiendo el dato a la cadena [Elimina el dato anterior en esa posición]
  166. If Cont = 0 Then
  167.     Cadena = Dato
  168. ElseIf Colum = 1 Then                           'Coloca el dato al principio
  169.     Cadena = Dato & Mid(Cadena, PosComas(1))
  170. ElseIf Colum = UBound(PosComas()) + 1 Then      'Coloca el dato al final
  171.     Cadena = Mid(Cadena, 1, PosComas(Colum - 1)) & Dato
  172. Else
  173.     Pedazo1 = Mid(Cadena, 1, PosComas(Colum - 1))
  174.     Pedazo2 = Mid(Cadena, PosComas(Colum))
  175.     Cadena = Pedazo1 & Dato & Pedazo2
  176. End If
  177.  
  178. 'Escribiendo en el Bloc Notas
  179. Open RutaArchivo For Output As #1
  180. For i = 1 To Max
  181.     If i = Linea Then
  182.         Vector(i) = Cadena
  183.         Print #1, Vector(i)
  184.     Else
  185.         Print #1, Vector(i)
  186.     End If
  187. Next i
  188. Close #1
  189.  
  190.  
  191.  
  192. End Sub
  193.  
  194.  


A continuacion coloca esto en el evento que quieras, por ejemplo, en un CommandButton1_Click:

Código: Text
  1. Private Sub Command1_Click()
  2. Dim i As Long
  3. Dim Ruta As String
  4.  
  5. Ruta = "C:MiTexto.txt"     'Dale una direccion valida de ruta
  6.  
  7. 'Este "For" lee los elementos de tu Lista y los escribe en un bloc de notas
  8. For i = 0 To List1.ListCount
  9.     Call EscribirDatoMATRIZ(1, i + 1, List1.List(i), Ruta)
  10. Next i
  11. 'Analiza esta funcion, que es capaz de leer datos de un bloc
  12. 'de notas que este ordenado por filas y columnas separadas por comas
  13. 'Comentario: NO UTILIZAR ESTE PROCEDIMIENTO CUANDO EL ARCHIVO DE LECTURA DEL BLOC DE NOTAS
  14. 'CONTENGAN MUCHAS FILAS O MUCHAS COLUMNAS SEPARADAS POR COMAS (mas de 10 mil filas y/o columnas)
  15. 'pero para aplicaciones sencillas, como guardar una configuracion de un formulario,
  16. 'alamcenar algunos datos de un cuadro de lista, o cosas similares es excelente
  17.  
  18.    
  19. End Sub
  20.  
  21.  


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


Yo quiero mucho a Toph ---> Mi Web]http://ingenieriacivil.foroactivo.com[/url]

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: DE LIST1 A TXT
« Respuesta #3 en: Jueves 23 de Octubre de 2008, 16:33 »
0
Cita de: "Jimbenit"
Te regalare dos de mis "super funciones"

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
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)

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

  • Miembro MUY activo
  • ***
  • Mensajes: 269
  • Nacionalidad: co
    • Ver Perfil
    • http://ingenieriacivil.foroactivo.com
Re: DE LIST1 A TXT
« Respuesta #4 en: Jueves 23 de Octubre de 2008, 16:47 »
0
Citar
Os aconsejo que si copiáis funciones, por lo menos os toméis el tiemp de entenderlas
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


Yo quiero mucho a Toph ---> Mi Web]http://ingenieriacivil.foroactivo.com[/url]

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: DE LIST1 A TXT
« Respuesta #5 en: Jueves 23 de Octubre de 2008, 17:18 »
0
Uf, te picaste  :blink: .

Cita de: "m0skit0"
Os aconsejo que si copiáis funciones, por lo menos os toméis el tiemp de entenderlas

Se lo decía a bobo, a ti te critico por no intentar enseñar, sino por hacer la tarea sin más... Eso es lo que está mal.

Cita de: "Jimbenit"
lo mas seguro es que las personas que preguntan saben muy poco de viasual basic

Precisamente por ello hay que enseñarle VB, no copiar-pegar... Poniéndoles el código no se van a enterar, lo van a usar tal cual y cuando tengan que hacer algo ligeramente diferente no sabrán modificarlo para esa nueva funcionalidad. No sirve de nada poner el código, hay que explicar las cosas, dar ejemplos y que piensen cómo adaptarlo a su situación concreta. Eso es programar. Lo otro es "usar el Word".

Cita de: "Jimbenit"
por que a tu pregunta sobre el archivo .INI no respondi tu pregunta, cierto??

No sé de qué hablas, refréscame la memoria podrida que tengo...

Cita de: "Jimbenit"
Hey, Moskito, me caes bien,... please, no discutamos ...

Sin ánimo de ofender, me da igual si te caigo bien o no, esa no es la cuestión. Y discutir es algo sano y natural. No pasa nada. No hay por qué enfadarse ni nada por el estilo. Para algo se inventó el lenguaje.

Un saludo y lee bien los posts para evitar molestas confusiones.

Jimbenit

  • Miembro MUY activo
  • ***
  • Mensajes: 269
  • Nacionalidad: co
    • Ver Perfil
    • http://ingenieriacivil.foroactivo.com
Re: DE LIST1 A TXT
« Respuesta #6 en: Jueves 23 de Octubre de 2008, 17:46 »
0
Cita de: "m0skit0"
Cita de: "Jimbenit"
Te regalare dos de mis "super funciones"

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.

Moskito, ¿Hablas español?, pues en la frase que dijiste que marque de color rojo antes del punto(.) te dirigias a mi, luego , despues del punto gramatical te diriges a "bobo" ??.. pues es un español muy pobre e induce a entender mal. Cuando en un mismo parrafo te diriges a dos personas diferentes utiliza el nombre de la persona seguido por una coma o si no, puedes utilizar un punto-y-coma (;) pero no uses el punto segido(.).

Nota:
El punto-y-coma (;) se utiliza para cambiar de sujeto (persona o cosa a la cual te refieres) y el punto seguido a la misma cosa o persona pero para dar una nueva percepcion o hacer un nuevo comentario, o decir un nuevo adjetivo, o dar un nuevo conocimiento sobre la MISMA cosa
Saludos.

Nota 2:
Citar
me da igual si te caigo bien o no, esa no es la cuestión. Y discutir es algo sano y natural. No pasa nada.
:huh:  :huh:  :huh:     :no:


Nota 3:
Este es mi ultimo mensaje sobre algo diferente al hilo inicial del tema, lo hago por respeto a las enseñanzas de mi querida
Toph

Nota 4:
Yo quiero mucho a Toph


Yo quiero mucho a Toph ---> Mi Web]http://ingenieriacivil.foroactivo.com[/url]

bobo

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: DE LIST1 A TXT
« Respuesta #7 en: Jueves 23 de Octubre de 2008, 23:24 »
0
gracias a todos, me super sirvio :beer:  :beer: use el de Jimbenit  que realmente era lo que buscaba
Ah y me ante un punto con mi jefe.- gracias a todos   :hitcomp:

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: DE LIST1 A TXT
« Respuesta #8 en: Viernes 24 de Octubre de 2008, 01:48 »
0
Cita de: "Jimbenit"
Citar
Os aconsejo que si copiáis funciones, por lo menos os toméis el tiemp de entenderlas
Las funciones que publico son creadas por mi...
(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:


Nota:
Yo quiero mucho a Toph
Mosquito tiene razón... si le das el código masticado a alguien lo que hace es copiarlo y no se molesta en entenderlo, y así no se ayuda a nadie.  Lo que hay que hacer es indicarle el camino y que lo recorra él a su manera, a su ritmo y si tiene dudas que vuelva a preguntar.

Yo ví esta pregunta ayer y no me molesté en resonder porque aunque el nivel de alguien sea de principiante esto se encuentra en la ayuda. Pulsando F1 y leyendo un poco sobre el control List y la instrucción Open.

El código completo no se debe ofrecer... si te dan dinero sin trabajar... alguien trabajaría... ?
«Ma non troppo»
----> ModoVacaciones = False<----

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: DE LIST1 A TXT
« Respuesta #9 en: Viernes 24 de Octubre de 2008, 06:41 »
0
Cita de: "Nebire"
si te dan dinero sin trabajar... alguien trabajaría... ?
Aunque para mí no se trata de que me moleste su dinero o trabajo, sino de una manera de entender las cosas, de saber compartir.

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: DE LIST1 A TXT
« Respuesta #10 en: Viernes 24 de Octubre de 2008, 16:36 »
0
Cita de: "m0skit0"
Cita de: "Nebire"
si te dan dinero sin trabajar... alguien trabajaría... ?
Aunque para mí no se trata de que me moleste su dinero o trabajo, sino de una manera de entender las cosas, de saber compartir.

Por supuesto... el ejemplo de dinero es una metáfora, que quiere indicar que si algo se consigue sin esfuerzo para qué esforzarse...
«Ma non troppo»
----> ModoVacaciones = False<----

bobo

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: DE LIST1 A TXT
« Respuesta #11 en: Domingo 26 de Octubre de 2008, 20:06 »
0
creo me me entendioron mal. estoy estudian vb y mi jefe me desafio a que podia, pues el codigo que cpoie, en efecto lo estudie y se lo refregue en la cara. Agradezco todo lo que ustedes ofrecen y estoy de acuerdo con que hay que cobrar, nada es gratis, espero no causar discordia entre ustedes.- Y alguien se equivoco por que me exprese mal, lo estudie y lo modifique en algunas partes. Espero no se enfaden con migo en su momento brindare con gusto mis ayudas. Saludos a todo y les pido disculpa por los disturbios causados, y no se me ocurre mas para disculparme.-
Saludos y nos leeremos :brickwall:

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: DE LIST1 A TXT
« Respuesta #12 en: Domingo 26 de Octubre de 2008, 20:53 »
0
Cita de: "bobo"
les pido disculpa por los disturbios causados

No hace falta que te disculpes, tú sólo has formulado una pregunta. No hay ningún problema ^_^