Advertisement
jsbsan

clase GestionarDatos Estructuras

Jul 14th, 2014
1,972
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ' Gambas class file
  2.  
  3. Public RutaDatos As String = User.home & "/Comentarios.dat"
  4.  
  5. Public Struct datos
  6.     asunto As String
  7.     color As Integer
  8.     fecha As Date
  9.     descripcion As String
  10. End Struct
  11.  
  12. Private lista As Datos[]
  13. Private $indice As Integer
  14.  
  15. Public Sub _new()
  16.    
  17.     lista = New Datos[] ' inicio array de datos de listas  
  18.    
  19. End
  20.  
  21. Public Sub add(d As Datos)
  22.    
  23.     lista.Add(d)
  24.     Message.Info(("Registro Añadido")) ' lo pongo con doble parentesis para que pueda se traducido a otros idiomas.
  25.    
  26. End
  27.  
  28. Public Function rescata(indice As Integer) As Datos
  29.    
  30.     Dim registro As New Datos
  31.    
  32.     Try registro = lista[indice]
  33.    
  34.     If Error Then
  35.         Message.Error("Ha habido un problema al intentar leer el registro indicado")
  36.         Return Null
  37.     Else
  38.         $indice = indice
  39.         Return registro
  40.     Endif
  41.    
  42. End
  43.  
  44. Public Function erase(indice As Integer) As Boolean
  45.    
  46.     Try lista.Delete(indice)
  47.     If Error Then
  48.         Message.Error("Ha habido un problema al intentar Borrar el registro indicado")
  49.         Return False
  50.     Else
  51.         Return True
  52.     Endif
  53.    
  54. End
  55.  
  56. Public Sub setIndice(a As Integer)
  57.     'comprobación de que a es admisible
  58.    
  59.     If a < 0 Then
  60.         Message.Error(("No es posible ir a ese indice, ya hemos llegado al primero"))
  61.         Return
  62.     Endif
  63.    
  64.     If a > lista.max Then
  65.         Message.Error(("No es posible ir a ese indice ya hemos llegado al ultimo"))
  66.         Return
  67.     Endif
  68.     $indice = a  
  69.    
  70. End
  71.  
  72. Public Sub getIndice() As Integer
  73.    
  74.     Return $indice
  75.    
  76. End
  77.  
  78. Public Function getNumeroRegistros() As Integer
  79.    
  80.     Return lista.max
  81.    
  82. End
  83.  
  84. Public Sub modificar(d As Datos, i As Integer)
  85.    
  86.     Try lista[i] = d
  87.     If Error Then
  88.         Message.Error(("Se ha producido un error al intentar actualizar los datos"))
  89.     Else
  90.         Message.Info(("Registro modificado correctamente"))
  91.     Endif
  92.    
  93. End
  94.  
  95. Public Sub guardardatos()
  96.    
  97.     Dim contenido As String
  98.     Dim linearegistro As String
  99.     Dim registrotmp As Datos
  100.     Dim a As Integer
  101.    
  102.     For a = 0 To lista.max ' tambien vale lista.count-1
  103.         registrotmp = lista[a]
  104.        
  105.         linearegistro = registrotmp.asunto & "|" & registrotmp.color & "|" & registrotmp.descripcion & "|" & registrotmp.fecha
  106.        
  107.         contenido &= linearegistro & gb.Cr 'tambien vale poner "\n"
  108.     Next
  109.    
  110.     File.Save(RutaDatos, contenido)
  111.    
  112. End
  113.  
  114. Public Sub leerdatos()
  115.    
  116.     Dim contenido As String
  117.     Dim arrayLineas As String[]
  118.     Dim DatosLinea As String[]
  119.     Dim registrotmp As Datos
  120.     Dim a As Integer
  121.     Dim f As String 'fecha en formato texto
  122.    
  123.     contenido = File.Load(RutaDatos)
  124.    
  125.     arrayLineas = Split(contenido, gb.CrLf)
  126.    
  127.     For a = 0 To arrayLineas.Max
  128.         If arrayLineas[a] <> "" Then
  129.             DatosLinea = Split(arrayLineas[a], "|")
  130.            
  131.             registrotmp = New Datos 'esta linea es muy importante ya que reinstancia la variable
  132.             registrotmp.asunto = DatosLinea[0]
  133.             registrotmp.color = Val(DatosLinea[1])
  134.             registrotmp.descripcion = DatosLinea[2]
  135.             f = DatosLinea[3]
  136.             registrotmp.fecha = Date(Mid$(f, 7, Len(f)), Mid$(f, 1, 2), Mid$(f, 4, 2))
  137.             lista.Add(registrotmp)
  138.         Endif
  139.     Next
  140.    
  141. End
Advertisement
RAW Paste Data Copied
Advertisement