Foros del Web » Programación para mayores de 30 ;) » .NET »

Actualizar linea de un archivo

Estas en el tema de Actualizar linea de un archivo en el foro de .NET en Foros del Web. Hola, estoy teniendo el siguiente problema y quizas ustedes puedan ayudarme. Estoy tratando de crear mi propia clase Ini. Es decir una clase que me ...
  #1 (permalink)  
Antiguo 06/10/2011, 13:04
 
Fecha de Ingreso: abril-2010
Mensajes: 82
Antigüedad: 14 años
Puntos: 2
Pregunta Actualizar linea de un archivo

Hola,

estoy teniendo el siguiente problema y quizas ustedes puedan ayudarme. Estoy tratando de crear mi propia clase Ini. Es decir una clase que me genere archivos ini, pero que me de la posibilidad de almacenarlos en cualquier directorio, no en C:WINDOWS, y que ademas no recurra a las API de windows. Es decir que genere mi propias Secciones, claves etc.

Lo que necesito hacer ahora es actualizar una de las claves de una seccion y no se como hacerlo

Ej:

[SECCION1]
CLAVE1=DATO1
CLAVE2=DATO2
CLAVE3=DATO3
[SECCION2]
CLAVE1=DATO1
CALVE2=DATO2

Si me imagino eso como un archivo de texto, lo que yo quiero es modificar la linea que esta en negrita por CLAVE2=HOLA, como yo utilizo StreamWriter y Streamreader, nada mas puedo crear o leer lineas, pero no actualizar, eliminar o modificar su contenido, alguien sabe como lo puedo hacer???

OJO!! No descarto utilizar otro metodo (por ejemplo en vez de usar archivos ini , utilizar xml, solo que no los conozco y no se como se generan)

Agradecere mucho al que me ayude.

Saludos
  #2 (permalink)  
Antiguo 09/10/2011, 13:42
Avatar de bieres  
Fecha de Ingreso: marzo-2011
Mensajes: 63
Antigüedad: 13 años, 1 mes
Puntos: 5
Respuesta: Actualizar linea de un archivo

Hola Codymarc:
Código:
        [DllImport("Kernel32.dll", CharSet = CharSet.Auto)]
        public static extern int GetPrivateProfileString(
            string lpAppName,        // points to section name
            string lpKeyName,        // points to key name
            string lpDefault,        // points to default string
            string lpReturnedString, // points to destination buffer
            int nSize,            // size of destination buffer
            string lpFileName        // points to initialization filename
        );

       [DllImport("kernel32", EntryPoint = "WritePrivateProfileStringA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
        private static extern int WritePrivateProfileString(string lpApplicationName, string lpKeyName, string lpString, string lpFileName);

        /// <summary>
        /// Propiedad archivo.
        /// </summary>
        /// <value>Entrada ruta y nombre archivo a Leer/grabar datos.</value>
        /// <returns>Ruta/nombre del archivo.</returns>
        /// <remarks></remarks>
        static internal string Archivo
        {
            get
            {
                return m_Ini;
            }
            set
            {
                m_Ini = value;
            }
        }


        /// <summary>
        /// Leer una llave de un archivo .ini
        /// </summary>
        /// <param name="Seccion">Sección del archivo ini.</param>
        /// <param name="Llave">Llave.</param>
        /// <returns>Dato/Nothing.</returns>
        /// <remarks></remarks>
        static internal string LeeIni(string Seccion, string Llave)
        {
            try
            {

                int ret;
                string sRetVal;
                //
                sRetVal = new string(' ', 255);
                //
                ret = GetPrivateProfileString(Seccion, Llave, "", sRetVal, sRetVal.Length, m_Ini);
                if (ret == 0)
                {
                    return "";
                }
                else
                {
                    return sRetVal.Substring(0, ret);
                }
            }
            catch (System.Exception ex)
            {
                return null;
            }          
        }

        /// <summary>
        /// Grabar una llave a un archivo ini
        /// </summary>
        /// <param name="Seccion">Sección del archivo ini.</param>
        /// <param name="Llave">Llave de la seccion del archivo ini.</param>
        /// <param name="Valor">Valor de la llave.</param>
        /// <remarks></remarks>
        static internal bool GrabaIni(string Seccion, string Llave, string Valor)
        {
            try
            {
                WritePrivateProfileString(Seccion, Llave, Valor, m_Ini);
                return true;
            }
            catch
            {
                return false;
            }
        }
Tambien puedes usar Xml, te adjunto enlace.

http://www.devjoker.com/contenidos/A...XML-con-C.aspx

http://www.subgurim.net/Articulos/xm...heros-xml.aspx
__________________
http://medprest.com

Última edición por bieres; 09/10/2011 a las 14:19
  #3 (permalink)  
Antiguo 11/10/2011, 11:20
 
Fecha de Ingreso: abril-2010
Mensajes: 82
Antigüedad: 14 años
Puntos: 2
Respuesta: Actualizar linea de un archivo

Claro, pero la cosa es que yo quiero usar esta clase en un Windows Ce 5, entonces no puedo importar nada del Kernell32, por eso queria hacerla yo
  #4 (permalink)  
Antiguo 11/10/2011, 12:24
 
Fecha de Ingreso: agosto-2011
Ubicación: Buenos Aires
Mensajes: 78
Antigüedad: 12 años, 8 meses
Puntos: 10
Respuesta: Actualizar linea de un archivo

Una alternativa es leer todo el string, realizar la modificación y guadar el nuevo string sobreescribiendo el archivo. Al usuario tendría la "sensación" de modificación nada más.
__________________
www.orientadoanet.com
  #5 (permalink)  
Antiguo 12/10/2011, 05:05
 
Fecha de Ingreso: abril-2010
Mensajes: 82
Antigüedad: 14 años
Puntos: 2
Respuesta: Actualizar linea de un archivo

Si, voy a tener que hacer eso.
Gracias.

Etiquetas: archivo.txt, vbnet
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:35.