Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Tratar archivo txt (https://www.clubdelphi.com/foros/showthread.php?t=72034)

jandrorm 25-01-2011 08:06:46

Tratar archivo txt
 
Hola buenos dias a todos, gracias antes de nada a tod@s.

Mi consulta es que quiero leer un archivo txt linea por linea, por ejemplo:

El archivo contiene:
Musica=ON

Vale esto se que con el Read se puede hacer. Pero mi duda es la siguiente, me gustaria poder hacer un desplegable entonces si Musica=ON me marque en el desplegable ON por defecto, y al modificar este desplegable y ponerlo en off y darle al boton de guardar se me reescriba en el archivo Musica=OFF. Tambien decir que este archivo tendra mas de una linea con distintos parametros.

Gracias de nuevo.

Toni 25-01-2011 08:48:20

Hola,

Esto lo puedes hacer de muchas formas, desde las funciones tipicas de c++ para tratamiento de ficheros hasta con las API's de windows. Pero una muy sencilla seria utilizando el componente TStringList. Puedes usar sus metodos para leer desde un fichero a memoria, hacer los cambios que quieras en memoria y despues guardarlo a disco.

Código Delphi [-]
TStringList->ReadFromFile("c:\mifichero.txt");
TStringList->SaveToFile("c:\mifichero.txt");

Una vez has leido en memoria solo tienes que recorrer el array he ir mirando los valores y sustituir lo que quieras. Y despues a grabar a disco.

Espero que te sirva de idea.

arturom 25-01-2011 10:19:33

Hola,
básicamente lo que describes es el comportamiento de un fichero tipo .ini

Para usar ficheros INI debes incluir la clase inifiles en uses y para usarlo usa esta técnica:
Código Delphi [-]
var
  Fichero: TIniFile;
  Usuario: String;
begin
  // Esto creará el archivo en el directorio de tu aplicación si no existe y lo abrirá si existe
  Fichero:= TIniFile.Create(ExtractFilePath(ParamStr(0))+'/fichas.ini');

  // Lee el Nombre del usuario dentro de las opciones Usuario, si no lo encuentra devuelve una cadena vacía
  // Estoy usando una variable de tipo cadena, si quieres usar opciones de tipo Boolean (SI/NO) debes usar la opción
  // Fichero.ReadBool(...);
  Usuario:=Fichero.ReadString('Usuario', 'Nombre', '');
  ..
  ..
  // Escribe el Nombre del usuario en las opciones de Usuario, si no existe, la creará
     Fichero.WriteString('Usuario', 'Nombre', Usuario);
  ..
  ..
  // Libera la memoria y destruye el objeto
  Fichero.Free;

Si tienes alguna duda, consulta la ayuda o pregunta algo más.

Chris 25-01-2011 17:10:06

No sé porque, pero últimamente he visto por lo menos dos casos semanalmente que intentan guardar y leer la configuración desde un archivo de texto. Será que en sus respectivas facultades no les enseñaran que para ese menester existen los archivos INI. Es que con tanto framework de alto nivel en estos días, ya parece que nadie le preocupa enseñar las cosas básicas.

Me queda esa duda en la cabeza. No sé que pensarán ustedes.

arturom 25-01-2011 18:23:11

Hola,
hace un rato leía un mensaje en este mismo foro, donde un compañero que se está iniciando en la programación con Delphi, preguntaba sobre los bucles.

Yo creo que el problema está en que no hay una base firme, no ya del lenguaje, sino incluso de la más mínima lógica procedimental.

De alguna forma, los entornos RAD ayudan al desarrollador, pero la base de conocimientos debes ponerla tu, a base de lectura y comprensión.

Nada que no se solucione con una dedicación más intensa al estudio... :rolleyes:


La franja horaria es GMT +2. Ahora son las 01:50:24.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi