elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  ¿ Como preservar los cambios de un ArrayList en My.Settings ?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿ Como preservar los cambios de un ArrayList en My.Settings ?  (Leído 2,263 veces)
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.788



Ver Perfil
¿ Como preservar los cambios de un ArrayList en My.Settings ?
« en: 30 Julio 2014, 17:08 pm »

Buenas

He acudido a varias personas del planeta para intentar resolver este problema de la manera idonea, pero por desgracia nadie ha podido aportarme algo de lúz a este misterio...

Me gustaría usar la interface de My.Settings para poder implementar una MRU algo avanzada en una aplicación, cada entrada de la MRU debería contener una imagen (Bitmap), un índice (Int32), y una cadena (String), pero la interface My.Settings es incompatible con Types genéricos (Ej: Tuple(of Bitmap, Integer, String) ) así que el type que mejor se adapta a mis necesidades es un ArrayList, porque antes que ponerme a escribir una pequeña Class serializable para almacenar estos 3 datos insignificantes prefiero usar un ArrayList que ya está implementado, sinceramente.

El problema es que los cambios que se efectuen a la propiedad no se preservan en los siguientes inicios de la aplicación ...y eso es lo que nadie me ha sabido resolver, yo por mi parte he probado todo lo que se me ha ocurrido, incluso la serialización del ArrayList pero he acabado echo un lio con eso.

Teniendo en cuenta que tenemos una propiedad como esta (con el ArrayList inicializado o sin inicializar, ¡no importa!):


Este código que he escrito demuestra el problema:
Código
  1. Public Class Test
  2.  
  3.    Private Sub Test_Handler() Handles MyBase.Shown
  4.  
  5.        ' Create a temporal predefined ArrayList.
  6.        Dim tmpArrayList As New ArrayList(capacity:=10I)
  7.        With tmpArrayList
  8.            .Add({"Item0", 0.0F})
  9.            .Add({"Item1", 0.5F})
  10.        End With
  11.  
  12.        ' Check the setting status.
  13.        If My.Settings.MRU Is Nothing Then
  14.            Debug.WriteLine("MRU setting is null.")
  15.            Debug.WriteLine("Initializing the Setting...")
  16.            My.Settings.MRU = New ArrayList(capacity:=10I)
  17.  
  18.        ElseIf Not My.Settings.MRU.Count Then
  19.            Debug.WriteLine("MRU is not null but the ArrayList is empty.")
  20.            Debug.WriteLine("Adding some items...")
  21.            My.Settings.MRU = tmpArrayList.Clone
  22.  
  23.        ElseIf My.Settings.MRU.Count Then
  24.            Debug.WriteLine("MRU setting is OK.")
  25.            Debug.WriteLine("Item Count: " & CStr(My.Settings.MRU.Count))
  26.            Threading.Thread.Sleep(Integer.MaxValue)
  27.  
  28.        End If
  29.  
  30.        Debug.WriteLine("Saving any changes")
  31.        My.Settings.Save()
  32.  
  33.        Debug.WriteLine("Updating any changes")
  34.        My.Settings.Reload()
  35.  
  36.        Debug.WriteLine(String.Empty)
  37.        Debug.WriteLine("****************************************")
  38.        Debug.WriteLine("Checking again the MRU setting status in...")
  39.        For Count As Integer = 1 To 3
  40.            Debug.WriteLine(CStr(Count) & New String("."c, Count))
  41.            Threading.Thread.Sleep(TimeSpan.FromSeconds(1))
  42.        Next
  43.        Debug.WriteLine("****************************************")
  44.        Debug.WriteLine(String.Empty)
  45.  
  46.        Me.Test_Handler()
  47.  
  48.    End Sub
  49.  
  50. End Class

¿Alguien conoce el motivo de porque ocurre esto, porque los cambios no se preservan en el siguiente inicio de la aplicación, y como poder solucionarlo?

PD: Me gustaría dejar bien claro que conozco varios métodos o mejor dicho alternativas para conseguir hacer lo mismo (es decir, guardar un archivo de configuración legible por la app), pero yo me he propuesto hacer esto usando My.Settings debido a las ventajas y comodidades que ofrece, quiero encarecidamente intentar resolver este problema unicamente usando my.settings y conocer con exactitud el motivo de porque el ArrayList no se preserva, no busco alternativas ...pues ya las conozco.

Gracias.


« Última modificación: 2 Agosto 2014, 07:56 am por Eleкtro » En línea

El Benjo


Desconectado Desconectado

Mensajes: 392



Ver Perfil WWW
Re: ¿ Como preservar los cambios de un ArrayList en My.Settings ?
« Respuesta #1 en: 30 Julio 2014, 19:49 pm »

Parece que tampoco se puede guardar el tipo 'ArrayList' en 'My. Settings'. Es decir, la aplicación puede decirte que los guarda pero sólo en memoria, nunca en disco. Aquí está otra persona con el mismo problema.

http://stackoverflow.com/questions/25008539/my-settings-does-not-save-an-arraylist

Y no tienes que crearte un método serializador para guardar eso. Con las funciones para serializar del propio .NET debería ser suficiente. A como yo lo veo, es la única solución que existe para guardar en 'My.Settings'. Saludos.


En línea

www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.788



Ver Perfil
Re: ¿ Como preservar los cambios de un ArrayList en My.Settings ?
« Respuesta #2 en: 30 Julio 2014, 21:50 pm »

Aquí está otra persona con el mismo problema.
Por desgracia Googleando no se puede encontrar mucha más información que esa acerca de este problema específico.
PD: Me hizo gracia lo de "otra persona", no te fijaste lo suficiente en el nombre del usuario :P

Citar
Y no tienes que crearte un método serializador para guardar eso. Con las funciones para serializar del propio .NET debería ser suficiente. A como yo lo veo, es la única solución que existe para guardar en 'My.Settings'. Saludos.

Por serializable no quise decir desarrollar un serializador, quise decir: crear una Class, añadirle 3 propiedades públicas ("image", "index", "file") declarar la Class como serializable (ISerializable), y luego reemplazar el uso del ArrayList por una colección de objetos, de esta Class, y usar los métodos ya existentes para serializar y deserializar la colección en "X" archivo, lo que quise decir era eso, y que para hacer todo ese rollo teniendo disponible un ArrayList entonces ¿para que hacerlo?, prefiero aprovechar la comodidad del ArrayList pero no hay por donde cojerlo.

Si supieras como guardar los cambios del ArrayList en la propiedad de My.Setting aunque fuese serializando la colección entonces me gustaría que pudieses mostrarme un ejemplo, yo lo intenté como puedes comprobar en el update de aquél post que citaste, pero en un comentario más abajo explico que acabé echo un lio porque no tenia muy claro si estaba serializando un Arraylists que contenia otro Arraylist Arraylist(Arraylist), y luego para deserializarlo acabé echo un lio también con el Stream de memoria, no tengo mucha experiencia en eso.

Gracias por comentar El Benjo

Un saludo!
« Última modificación: 30 Julio 2014, 21:56 pm por Eleкtro » En línea

El Benjo


Desconectado Desconectado

Mensajes: 392



Ver Perfil WWW
Re: ¿ Como preservar los cambios de un ArrayList en My.Settings ?
« Respuesta #3 en: 31 Julio 2014, 08:14 am »

Jajajajajajajaja Lo siento, creo que lo de 'otra persona' era una ilusión. Y sí, creo que entiendo tu problema con lo de la serialización. Lamento no poder ayudarte, pero si se me ocurre algo sin muchas complicaciones, te digo.
En línea

www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
arraylist character to arraylist String
Java
mapers 4 5,297 Último mensaje 1 Noviembre 2011, 15:24 pm
por adastra
¿Cómo ordenar un ArrayList de elementos-registro según uno de sus campos?
Java
reygecko 1 4,403 Último mensaje 17 Enero 2013, 00:00 am
por reygecko
Meter ArrayList en Otro ArrayList
Java
Tuplado 1 3,084 Último mensaje 5 Enero 2014, 22:10 pm
por ~ Yoya ~
como puedo ordenar 2 arraylist ?
Java
holamega12 8 4,605 Último mensaje 15 Febrero 2015, 16:31 pm
por Usuario Invitado
¿Cómo manejar un ArrayList de objetos?
Java
luchi 2 2,816 Último mensaje 3 Septiembre 2016, 18:28 pm
por luchi
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines