https://foro.gambas-es.org/viewtopic.php?f=5&t=5452
-----------------------------------
v3ctor
Martes, 10 May 2016, 16:52

Construyendo Una Clase Registro
-----------------------------------
buenas....


que les parece esta clase?
sugerencias?
mejoras?
ven errores de planteo?

soy todo oidos  :lol: 


[code linenumbers=false syntax=gambas]

' Gambas class file

' by postapase

Export

Property Lugar As String '' Devuelve o muestra la carpeta que contiene el archivo de registros.
Property Read Nombre As String '' Devuelve o muestra el nombre del archivo de registros.
Property Read Ruta As String '' Devuelve o muestra la ruta completa del archivo de registros.

Private sLugar As String
Private sNombreX As String
Private sRuta As String


Public Sub _new(sDir As String, sNombre As String) ''sDir= ruta donde se guardará el archivo, sNombre=Nombre del archivo sin extención
  
  If Exist(sDir) = True Then
    sLugar = sDir
    sNombreX = sNombre
    Lugar_Write(sLugar)
    sRuta = sLugar &/ sNombre
  
    If Exist(sRuta) = False Then
       File.Save(sRuta, "*** Creado(" & Now & ") ***" & gb.NewLine)
    Endif
  Else
    Message.Error("Lugar invalido!")
    Return
  Endif
  
End

Private Function Lugar_Read() As String
  Return sLugar
End

Private Sub Lugar_Write(Value As String)
  sLugar = Value
End

Private Function Nombre_Read() As String 
  Return sNombreX
End

Private Function Ruta_Read() As String
  Return sRuta
End

Public Sub Agregar(Mensaje As String, Optional Xtipo As String) '' Agrega un mensaje al archivo de registros.
  Dim ArchivoX As File
  
  If Exist(sRuta) = False Then
    Return
  Endif
  
  If IsNull(Mensaje) Then 
    Return 
  Endif  
  
  If IsNull(Xtipo) Then Xtipo = Tipo.REG
  
  ArchivoX = Open sRuta For Append
  Print #ArchivoX, "[" & Xtipo & "]+(" & Now & ")+" & Mensaje 
  Close #ArchivoX 
  
End

Public Sub Borrar() '' Borra todo el contenido del archivo de registros (precaucion).
  
  If Access(sLugar, gb.Write) = True Then
    If Exist(sRuta) = True Then
      
       Try Kill sRuta
      
       If Error Then Debug Error.Text & " " & Error.Where & " " & Error.Code
      
       File.Save(sRuta, "*** Creado(" & Now & ") ***" & gb.NewLine)
       
    Else 
       File.Save(sRuta, "*** Creado(" & Now & ") ***" & gb.NewLine)
    Endif
  Endif
  
End


Public Sub Filtro(Xtipo As String) As String[]
  Dim ArchivoX As File
  Dim Linea, Etiqueta As String
  Dim Division, errores As String[]
  Dim aError As New String[]
  Dim aReg As New String[]
  Dim aNota As New String[]
  Dim aTodo As New String[]
  Dim aSql As New String[]
  
  ArchivoX = Open sRuta For Read
  
 While Not Eof(ArchivoX)
   
   Line Input #ArchivoX, Linea
   
   If Left(Linea, 1) <> "[" Then 
     Continue
   Else
     Division = Split(Linea, "+")
   
     Etiqueta = Left(Division[0], Len(Division[0]) - 1)
     Etiqueta = Right(Etiqueta, Len(Etiqueta) - 1)
     
     Select Case Xtipo
       Case Tipo.ERROR
         If Etiqueta = Tipo.ERROR Then aError.Add(Linea)
       Case Tipo.NOTA
         If Etiqueta = Tipo.NOTA Then aNota.Add(Linea)
       Case Tipo.REG
         If Etiqueta = Tipo.REG Then aReg.Add(Linea)
       Case Tipo.SQL
         If Etiqueta = Tipo.SQL Then aSql.Add(Linea)
       Case Tipo.TODO
         aTodo.Add(Linea)
     End Select
     
   Endif
   
 Wend
 
 Close ArchivoX
  
  Select Case Xtipo
       Case Tipo.ERROR
         If aError.Count <= 0 Then Return
         Return aError
       Case Tipo.NOTA
         If aNota.Count <= 0 Then Return
         Return aNota
       Case Tipo.REG
         If aReg.Count <= 0 Then Return
         Return aReg
       Case Tipo.SQL
          If aSql.Count <= 0 Then Return
         Return aSql
       Case Tipo.TODO
          If aTodo.Count <= 0 Then Return
         Return aTodo
       Case Else
     End Select
  
End[/code]


