Matias.Ariel
New Member
Hola foreros, soy Matias de Buenos Aires y estoy realizando mi primer aplicacion en B4A.
Es una aplicacion para solucionarle un poco el trabajo a mi padre. Estuve leyendo muchos post de este foro y tutoriales que econtre por internet y pude avanzar muchisimo con esta aplicacion.
Sólo tengo un problema, ésta aplicacion tiene un List del Type que declare y necesito que se mantenga la informacion en esta lista por mas que se apague el celular. Lo que pense fue crear un archivo de texto con esta lista con cada modificacion que se realice y que al comenzar a correr la aplicacion se cargue la lista con este archivo. No entiendo por que no puedo levantar este archivo en la lista al comienzo.
El codigo que estoy utilizando es el siguiente:
Con este codigo el archivo "memoria.txt" se crea bien, tiene un formato raro con [ ] y cada campo correspondiente al Type que estrableci.
El problema es que al querer levantar el mismo archivo me da un error que no se bien que significa.
Estoy mostrando las partes del codigo que creo son utiles para resolver el problema, si me esta faltando algo por favor me dicen.
PD: Capaz es posible mantener la informacion del List sin hacer todo esto de crear el archivo txt y no se como se hace, si alguien sabe eso podria reemplazar este sistema.
Desde ya les agradezco mucho que me ayuden con este tema puntual para terminar mi aplicaciñon.
Saludos!
Es una aplicacion para solucionarle un poco el trabajo a mi padre. Estuve leyendo muchos post de este foro y tutoriales que econtre por internet y pude avanzar muchisimo con esta aplicacion.
Sólo tengo un problema, ésta aplicacion tiene un List del Type que declare y necesito que se mantenga la informacion en esta lista por mas que se apague el celular. Lo que pense fue crear un archivo de texto con esta lista con cada modificacion que se realice y que al comenzar a correr la aplicacion se cargue la lista con este archivo. No entiendo por que no puedo levantar este archivo en la lista al comienzo.
El codigo que estoy utilizando es el siguiente:
B4X:
Sub Globals
'These global variables will be redeclared each time the activity is created.
'These variables can only be accessed from this module.
Type productop(nombre As String,cant1 As Float, obs1 As String, cant2 As Float, obs2 As String, cant3 As Float, obs3 As String, cant4 As Float, obs4 As String, cant5 As Float, obs5 As String, cant6 As Float, obs6 As String)
Dim ListaTotal As List
Dim ListViewP As ListView
End Sub
Sub Activity_Create(FirstTime As Boolean)
'Do not forget to load the layout file created with the visual designer. For example:
'Activity.LoadLayout("LayoutMenu")
Activity.LoadLayout("LayoutMenuChico")
ListaTotal.Initialize
File.OpenInput(File.DirDefaultExternal, "memoria.txt")
Try
ListaTotal = File.ReadList(File.DirDefaultExternal, "memoria.txt")
Catch
ToastMessageShow("Error al cargar memo",True)
End Try
Sub GrabarMemo
File.WriteList(File.DirDefaultExternal, "memoria.txt", ListaTotal)
End Sub
Sub InsertarEnLista(prod As String, cant As Float, obs As String,suc As Int)
Dim pos As Int
Dim registrop As productop
Dim registrofinal As productop
pos = -99
If ListaTotal.Size > 0 Then
registrop.Initialize
For i = 0 To ListaTotal.Size - 1
registrop = ListaTotal.Get(i)
If prod = registrop.nombre Then
registrofinal.Initialize
registrofinal = registrop
pos = i
End If
Next
End If
If pos <> -99 Then
If suc = 1 Then
registrofinal.cant1 = cant
registrofinal.obs1 = obs
ListaTotal.Set(pos,registrofinal)
Else If suc = 2 Then
registrofinal.cant2 = cant
registrofinal.obs2 = obs
ListaTotal.Set(pos,registrofinal)
Else If suc = 3 Then
registrofinal.cant3 = cant
registrofinal.obs3 = obs
ListaTotal.Set(pos,registrofinal)
Else If suc = 4 Then
registrofinal.cant4 = cant
registrofinal.obs4 = obs
ListaTotal.Set(pos,registrofinal)
Else If suc = 5 Then
registrofinal.cant5 = cant
registrofinal.obs5 = obs
ListaTotal.Set(pos,registrofinal)
Else If suc = 6 Then
registrofinal.cant6 = cant
registrofinal.obs6 = obs
ListaTotal.Set(pos,registrofinal)
End If
Else
registrofinal.nombre = prod
registrofinal.cant1 = 0
registrofinal.obs1 = ""
registrofinal.cant2 = 0
registrofinal.obs2 = ""
registrofinal.cant3 = 0
registrofinal.obs3 = ""
registrofinal.cant4 = 0
registrofinal.obs4 = ""
registrofinal.cant5 = 0
registrofinal.obs5 = ""
registrofinal.cant6 = 0
registrofinal.obs6 = ""
If suc = 1 Then
registrofinal.cant1 = cant
registrofinal.obs1 = obs
ListaTotal.Add(registrofinal)
Else If suc = 2 Then
registrofinal.cant2 = cant
registrofinal.obs2 = obs
ListaTotal.Add(registrofinal)
Else If suc = 3 Then
registrofinal.cant3 = cant
registrofinal.obs3 = obs
ListaTotal.Add(registrofinal)
Else If suc = 4 Then
registrofinal.cant4 = cant
registrofinal.obs4 = obs
ListaTotal.Add(registrofinal)
Else If suc = 5 Then
registrofinal.cant5 = cant
registrofinal.obs5 = obs
ListaTotal.Add(registrofinal)
Else If suc = 6 Then
registrofinal.cant6 = cant
registrofinal.obs6 = obs
ListaTotal.Add(registrofinal)
End If
ListaTotal.SortType("nombre",True)
End If
End Sub
Con este codigo el archivo "memoria.txt" se crea bien, tiene un formato raro con [ ] y cada campo correspondiente al Type que estrableci.
El problema es que al querer levantar el mismo archivo me da un error que no se bien que significa.
Estoy mostrando las partes del codigo que creo son utiles para resolver el problema, si me esta faltando algo por favor me dicen.
PD: Capaz es posible mantener la informacion del List sin hacer todo esto de crear el archivo txt y no se como se hace, si alguien sabe eso podria reemplazar este sistema.
Desde ya les agradezco mucho que me ayuden con este tema puntual para terminar mi aplicaciñon.
Saludos!