Ver Mensaje Individual
  #11  
Antiguo 19-02-2023
REHome REHome is offline
Miembro
 
Registrado: jul 2003
Ubicación: España
Posts: 472
Reputación: 22
REHome Va por buen camino
Lo he logrado con el Newtonjson, en el cual es una librería externa.

El resultado me queda en una sola línea y no me gusta. Por ejemplo.
Código:
{"TextBox":"Hola Club Delphi","CheckBox":true,"RadioButton1_Luz_ON":true,"RadioButton2_Luz_OFF":false}
Cuando en realidad debe quedar así para su fácil entendimiento o de forma legible.
Código:
{
     "TextBox":"Hola Club Delphi",
     "CheckBox":true,
     "RadioButton1_Luz_ON":true,
     "RadioButton2_Luz_OFF":false
}
Al menos ya puedo guardar y leer el json de una vez por todas. Ya averiguaré el formato de guardado como dije arriba.

Lo que estoy intentado, es evitar librerías de terceros como el Newtonjson, lo que no sabía que está el System.Text.json de la propia .net 7.0, que en realidad es nuevo en el core ya que el .net 4.8 hacia atrás no lo incluye.

Dejo aquí el código por si alguien lo necesita o por curiosear hecho con el Newtonjson.
Código:
using Newtonsoft.Json;

namespace Guardar_y_cargar_datos_en_archivo.json_.NET_7._0
{

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        class MiInfo
        {
            public string? TextBox { get; set; }
            public bool CheckBox { get; set; }
            public bool RadioButton1_Luz_ON { get; set; }
            public bool RadioButton2_Luz_OFF { get; set; }
        }

        void SalvarDatos()
        {
            MiInfo miInfo = new()
            {
                TextBox = textBox1.Text,
                CheckBox = checkBox1.Checked,
                RadioButton1_Luz_ON = radioButton1.Checked,
                RadioButton2_Luz_OFF = radioButton2.Checked
            };

            try
            {
                string serializado = JsonConvert.SerializeObject(miInfo);
                File.WriteAllText(@"Ejemplo.json", serializado);
            }
            catch {}
        }

        void RecuperarDatos()
        {
            if (File.Exists(@"Ejemplo.json"))
            {
                string serializado = File.ReadAllText(@"Ejemplo.json");
                //MiInfo miInfo = (MiInfo)JsonConvert.DeserializeObject(serializado);
                MiInfo miInfo = JsonConvert.DeserializeObject<MiInfo>(serializado);
                if (miInfo != null)
                {
                    textBox1.Text = miInfo.TextBox;
                    checkBox1.Checked = miInfo.CheckBox;
                    radioButton1.Checked = miInfo.RadioButton1_Luz_ON;
                    radioButton2.Checked = miInfo.RadioButton2_Luz_OFF;
                }
            }
        }

        private void button_Guardar_Click(object sender, EventArgs e)
        {
            SalvarDatos();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            RecuperarDatos();
        }
    }
}
Como podrán ver, he intentado usarlo con la librería de la propia Visual Studio Community 2022 usando .NET 7.0 y no es compatible.

¿Alguna idea sobre cómo adaptar de Newtosjon al de Microsoft que viene de serie?

En cuanto a los ini, los abandoné desde hace años cuando me dijeron que es muy viejo y lento, tampoco use el editor de registro para guardar datos y leerlos, ya que esta el Windows cada vez sería más lento, que suse XML y lo he usado hasta a día de hoy y ahora quiero ver el json por lo que veo, antes lo ignoraba y parece mejor que el xml y depende para qué, al menos para leer y entender de entrada, parece el más recomendable, por se usa cada vez más y más.

Saludos.
__________________
http://electronica-pic.blogspot.com....n-arduino.html Manuales de electrónica general, PIC y Arduino.
Responder Con Cita