FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
¿Cuál es el mejor archivo para guardar y recuperar datos?
Hola:
Antes usaba muchos el XML para guardar y leer datos que tenía en el formulario. Por ejemplo en este caso. Código:
using System; using System.Windows.Forms; using System.Xml; namespace Guardar_y_cargar_datos_en_archivo_xml { * *public partial class Form1 : Form * *{ * * * *public Form1() * * * *{ * * * * * *InitializeComponent(); * * * *} * * * *// Guarda los datos introducidos a parte de crear el archivo "miXML.xml". * * * *private void button_Guardar_Click(object sender, EventArgs e) * * * *{ * * * * * *XmlWriter w = XmlWriter.Create("miXML.xml"); * * * * * *w.WriteStartElement("MiInfo"); * * * * * *w.WriteElementString("TextBox", textBox1.Text); * * * * * *w.WriteElementString("CheckBox", checkBox1.Checked.ToString()); * * * * * *w.WriteElementString("radioButton1", radioButton1.Checked.ToString()); * * * * * *w.WriteElementString("radioButton2", radioButton2.Checked.ToString()); * * * * * *w.WriteEndElement(); * * * * * *w.Close(); * * * *} * * * *private void Form1_Load(object sender, EventArgs e) * * * *{ * * * * * *try * * * * * *{ * * * * * * * *XmlReader r = XmlReader.Create("miXML.xml"); * * * * * * * *r.ReadStartElement("MiInfo"); * * * * * * * *textBox1.Text = r.ReadElementContentAsString(); * * * * * * * *checkBox1.Checked = Convert.ToBoolean(r.ReadElementContentAsString()); * * * * * * * *radioButton1.Checked = Convert.ToBoolean(r.ReadElementContentAsString()); * * * * * * * *radioButton2.Checked = Convert.ToBoolean(r.ReadElementContentAsString()); * * * * * * * *r.ReadEndElement(); * * * * * * * *r.Close(); * * * * * *} * * * * * *catch (Exception) * * * * * *{ * * * * * * * *// * * * * * *} * * * *} * *} } Código:
<MiInfo> <TextBox>Texto y textos</TextBox> <CheckBox>True</CheckBox> <radioButton1>False</radioButton1> <radioButton2>True</radioButton2> </MiInfo> Ahora, veo mucho con el santo JSON. ¿Es recomendable usar el JSON? Si es cierto o no. Quiero hacer el mismo ejemplo de recuperar y guardar datos como se hizo el XML. Saludos.
__________________
http://electronica-pic.blogspot.com....n-arduino.html Manuales de electrónica general, PIC y Arduino. Última edición por Neftali [Germán.Estévez] fecha: 13-02-2023 a las 10:57:53. Razón: Corregir link a la imagen |
#2
|
||||
|
||||
El "mejor" formato depende de los requisitos y todo eso. Si no hay un problema con tu uso de XML, no veo el porque cambiar por cambiar.
__________________
El malabarista. |
#3
|
|||
|
|||
Más que cambiar quier probar cosas que nunca he probado como el json, también porque cada vez más lo usan más y más, a parte de eso, parece más fácil de leer por el humano que muchas etiquetas que tiene el XML a lo HTML, tiene menos peso entre otras ventajas.
__________________
http://electronica-pic.blogspot.com....n-arduino.html Manuales de electrónica general, PIC y Arduino. |
#4
|
||||
|
||||
Prefiero el .ini de toda la vida, es más simple
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#5
|
|||
|
|||
Precisamente usaba *.ini y me comentaron ya por el 2.000 que es muy lento, intento con .reg y me dice que te relantiza Windows con el tiempo, mejor nunca tocar el editor de registro, al final me enseñaron XML y mal hecho, a lo antigua, ahora se hace con clases. Hoy en día por su versatilidad el json.
¿Qué entiende más el humano? XML Código:
<?xml version="1.0" encoding="utf-8"?> <MiInfo> <TextBox>Hola.</TextBox> <CheckBox>True</CheckBox> <radioButton1_Luz_ON>False</radioButton1_Luz_ON> <radioButton2_Luz_OFF>True</radioButton2_Luz_OFF> </MiInfo> Código:
{ "MiInfo": { "TextBox": "Hola.", "CheckBox": "True", "radioButton1_Luz_ON": "False", "radioButton2_Luz_OFF": "True" } }
__________________
http://electronica-pic.blogspot.com....n-arduino.html Manuales de electrónica general, PIC y Arduino. |
#6
|
||||
|
||||
Todo depende de para lo que se use exactamente.
Mucho más simple, claro... y rápido así: Código:
TextBox: Hola. CheckBox: True radioButton1_Luz_ON: False radioButton2_Luz_OFF: True
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#7
|
||||
|
||||
Concuerdo con legibilidad y simpleza de Jsom vs XML
Y si bien sigo usando .ini por su minimalismo y eficacia. No me atrevería a usarlo para decenas de datos. |
#8
|
||||
|
||||
Hola a todos,
Estoy con Mario. Depende del uso que se le quiera dar. Hay datos, por ejemplo, que pueden guardarse en XML (usando "CDATA") que no sería posible o sería muy complicado guardar en archivos JSON, por ejemplo. De modo que depende del uso que se le vaya a dar al archivo y a los datos que se necesita guardar en el mismo. Si son datos verdaderamente simples acaso el venerable INI, o acaso JSON, en lugar de XML, pero, lo cierto es que cada archivo tiene sus más y su menos. |
#9
|
||||
|
||||
Al final todos los tipos de los que estamos hablando son ficheros de texto, por lo tanto son muy similares.
A mi me siguen gustando, por simplicidad y por legibilidad, los .INI Para los otros, XML y JSON, lo primero que tengo que hacer al abrirlos con un editor (Notepad++) es formatearlos, cosa que me ha mucha rabia/madra. Si se necesita más complejidad (por ejemplo anidamiento) ya si que es necesario ir a XML/JSON. Y entre estos 2 pues casi mejor (en mi caso) JSON, por legibilidad también, y porque puedes usar clases nativas; Los XMLDoc, Xml.XMLIntf, XMLDom, me resultan incómodos. Por otro lado, yo he usado a veces esto, que resulta muy útil y cómodo (siempre y cuando la estructura del JSON no cambie): https://jsontodelphi.com/
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#10
|
||||
|
||||
Yo suelo usar IFF. De hecho hace poco subí mis clases a SourceForge con el nombre de iff4pascal. Si no lo había dicho es porque estaba pensando en si añadir soporte a RIFF, pero tampoco veo el porqué... Bueno, eso y que todavía no lo he probado con Delphi, aunque no debería dar muchos problemas.
|
#11
|
|||
|
|||
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} Código:
{ "TextBox":"Hola Club Delphi", "CheckBox":true, "RadioButton1_Luz_ON":true, "RadioButton2_Luz_OFF":false } 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(); } } } ¿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. |
#12
|
||||
|
||||
Cita:
Si todo lo que vas a almacenar es algo así: Cita:
Ahora, si vas a almacenar "registros" en ese fichero de texto, eso ya sería distinto.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#13
|
|||
|
|||
Se ve muy bien el ini, lo recuerdo bien y lo usaba mucho el Officce 1997. Los de ahora no lo he mirado y mira que ha llovido desde entonces.
No recordaba que el más rápido y también me aconsejaron, es usar el binario. https://learn.microsoft.com/es-es/do...e?view=net-7.0 Como no lo lee en el block de notas, por muy rápido que sea, lo descarté. Y mira que Delphi, lo tengo todavía pendiente para hacer cosas relacionados con Arduino, ejemplos, pequeños tutoriales. Hace años hice un tutorial sencillo, así que Delphi no quede en el olvido, ya que Java por medio, que si Python, que si el Visual Studio y no se qué, pascal en general solo lo apoya Delphi. Gracias.
__________________
http://electronica-pic.blogspot.com....n-arduino.html Manuales de electrónica general, PIC y Arduino. Última edición por REHome fecha: 19-02-2023 a las 21:26:13. |
#14
|
||||
|
||||
Varias veces hablas de algo "rápido" pero lo que muestras no veo algo que lo demande. Si no hablamos de varias megas/gigas no va a ver enorme diferencia entre los formatos.
Creo que si no tienes claro el porque estas buscando un formato ninguno va a resaltar. P.D: La version moderna de los INI es el TOML https://toml.io/en/
__________________
El malabarista. |
#15
|
||||
|
||||
Cita:
Viendo el ejemplo de su web, está claro que es un nombre muy apropiado. ¿Sabes si hay algo implementado en Delphi para usarlos?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#16
|
||||
|
||||
__________________
El malabarista. |
#17
|
||||
|
||||
Esto de TOML está chulo.
Ahora recuerdo que hace años creé un sistema propio y gerárquico y llegué a usarlo en programas para clientes. No voy a entrar en detalles porque lo tengo borroso, pero quizá deba darle una vuelta y re-inventarlo a partir de lo que recuerdo... |
#18
|
||||
|
||||
Muy chulo, muy completo, con esas listas y demás queda muy completo.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#19
|
|||
|
|||
Teniendo este código que por fin ya funciona, lo de guardar y leer controles como configuración de formulario Windows.
Uso el .NET 7.0 y tiene su propia librería. Mi idea es no usar librerías externas como Newtonjson, si no el que incluye el propio .NET. La librería oficial de Visual Studio viene aquí. Dejo el código aquí abajo hecho con 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(); } } } ¿Alguna idea? Lo pregunto porque veo que no es para nada compatible entre Newtonjson con el json .net de Microsoft. https://learn.microsoft.com/es-es/do...r?view=net-7.0 Saludos.
__________________
http://electronica-pic.blogspot.com....n-arduino.html Manuales de electrónica general, PIC y Arduino. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Cuál es el mejor servicio para guardar archivos en la nube? | Lucuitas | Internet | 13 | 25-04-2019 21:10:29 |
Cual es la mejor opción de conexión a Bases de Datos en Lazarus para ... ? | rolandoj | Lazarus, FreePascal, Kylix, etc. | 20 | 24-09-2012 02:44:57 |
¿Cuál es la mejor base de datos del mercado? | rrf | Varios | 3 | 06-07-2010 19:12:12 |
Cual seria el mejor lugar para guardar la contraseña de acceso a mi Aplicacion | JoAnCa | Varios | 3 | 21-02-2009 22:42:36 |
Cual es el mejor manejador gratis de base de datos para MySQl 5.0+ ? | juangabriel1786 | SQL | 3 | 15-12-2008 01:10:29 |
|