• Jueves 9 de Mayo de 2024, 02:43

Autor Tema:  Dejo dos func. para utilizar un bloc de notas como memoria  (Leído 1552 veces)

Jimbenit

  • Miembro MUY activo
  • ***
  • Mensajes: 269
  • Nacionalidad: co
    • Ver Perfil
    • http://ingenieriacivil.foroactivo.com
Dejo dos func. para utilizar un bloc de notas como memoria
« en: Martes 26 de Agosto de 2008, 20:55 »
0
Estas dos funciones pueden servirles a muchos, esta las hice hace unos meses, espero que les guste. Es para crear un bloc de notas donde puedes guardar información y luego recuperar, la información guardada se almacena en un orden de filas y columnas. Estas funciones debesw colocarlas en un modulo Estandar y luego llamarlas desde cualquier parte de tu programa.

Para Super Novatos:
* Abre Visual Basic en un proyecto Estandar en blanco
* Ves al menu "Proyecto" y luego en "Agregar modulo"
Se edespliega una ventana llamada "Agregar Modulo", dale click en Abrir
* Copia y pega el siguiente codigo en esa ventana:

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, "Archivo de Texto creado para guardar información" & vbCrLf & "jimbenit@hotmail.com"
  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, "Archivo de Texto creado para guardar información" & vbCrLf & "jimbenit@hotmail.com"
  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.  
  195.  


* Cierra la venta de codigo
*Dale doble click en el formulario:
Debe abrirse la venta codigo con las palabras
Código: Text
  1. Private Sub Form_Load()
  2.  
  3. End Sub
  4.  
  5.  

 y escribe esta linea en medio de las lineas anteriores

Código: Text
  1. Call EscribirDatoMATRIZ(4, 5, "Hola mundo!!", "C:/MiBlocNotas.txt")
  2.  

*Ejecuta tu aplicación y luego ves a tu disco local C: y veras un archivo de texto con el nombre MiBlocNotas

Saludos.


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

Jimbenit

  • Miembro MUY activo
  • ***
  • Mensajes: 269
  • Nacionalidad: co
    • Ver Perfil
    • http://ingenieriacivil.foroactivo.com
Re: Dejo dos func. para utilizar un bloc de notas como memoria
« Respuesta #1 en: Martes 9 de Septiembre de 2008, 23:22 »
0
Alguien ha utilizado estas funciones?, pues me gustaria saber sus comentarios.
Saludos


P.D. ===> Saludenme por lo menos.


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