\' Gambas class file
Public RutaDatos As String = User.home & "/Comentarios.dat"
Public Struct datos
asunto As String
color As Integer
fecha As Date
descripcion As String
End Struct
Private lista As Datos[]
Private $indice As Integer
Public Sub _new()
lista = New Datos[] \' inicio array de datos de listas
End
Public Sub add(d As Datos)
lista.Add(d)
Message.Info(("Registro AƱadido")) \' lo pongo con doble parentesis para que pueda se traducido a otros idiomas.
End
Public Function rescata(indice As Integer) As Datos
Dim registro As New Datos
Try registro = lista[indice]
If Error Then
Message.Error("Ha habido un problema al intentar leer el registro indicado")
Return Null
Else
$indice = indice
Return registro
Endif
End
Public Function erase(indice As Integer) As Boolean
Try lista.Delete(indice)
If Error Then
Message.Error("Ha habido un problema al intentar Borrar el registro indicado")
Return False
Else
Return True
Endif
End
Public Sub setIndice(a As Integer)
\'comprobaciĆ³n de que a es admisible
If a < 0 Then
Message.Error(("No es posible ir a ese indice, ya hemos llegado al primero"))
Return
Endif
If a > lista.max Then
Message.Error(("No es posible ir a ese indice ya hemos llegado al ultimo"))
Return
Endif
$indice = a
End
Public Sub getIndice() As Integer
Return $indice
End
Public Function getNumeroRegistros() As Integer
Return lista.max
End
Public Sub modificar(d As Datos, i As Integer)
Try lista[i] = d
If Error Then
Message.Error(("Se ha producido un error al intentar actualizar los datos"))
Else
Message.Info(("Registro modificado correctamente"))
Endif
End
Public Sub guardardatos()
Dim contenido As String
Dim linearegistro As String
Dim registrotmp As Datos
Dim a As Integer
For a = 0 To lista.max \' tambien vale lista.count-1
registrotmp = lista[a]
linearegistro = registrotmp.asunto & "|" & registrotmp.color & "|" & registrotmp.descripcion & "|" & registrotmp.fecha
contenido &= linearegistro & gb.Cr \'tambien vale poner "\\n"
Next
File.Save(RutaDatos, contenido)
End
Public Sub leerdatos()
Dim contenido As String
Dim arrayLineas As String[]
Dim DatosLinea As String[]
Dim registrotmp As Datos
Dim a As Integer
Dim f As String \'fecha en formato texto
contenido = File.Load(RutaDatos)
arrayLineas = Split(contenido, gb.CrLf)
For a = 0 To arrayLineas.Max
If arrayLineas[a] <> "" Then
DatosLinea = Split(arrayLineas[a], "|")
registrotmp = New Datos \'esta linea es muy importante ya que reinstancia la variable
registrotmp.asunto = DatosLinea[0]
registrotmp.color = Val(DatosLinea[1])
registrotmp.descripcion = DatosLinea[2]
f = DatosLinea[3]
registrotmp.fecha = Date(Mid$(f, 7, Len(f)), Mid$(f, 1, 2), Mid$(f, 4, 2))
lista.Add(registrotmp)
Endif
Next
End