PDA

Ver la Versión Completa : TiniFile, trabajando en memoria


Bauhaus1975
15-10-2008, 10:42:22
Hola,
Ya he visto en otros hilos la gran ventaja de usar el TiniFile, pero no tengo claro cómo trabaja en memoria. Alguien puede explicarme si se puede y cómo cargar datos de un archivo.ini en memoria para usarlos mientras dure la ejecución del programa, y guardar los nuevos datos solamente al salir de la aplicación. De esta manera sólo necesitaría acceder a disco en dos ocasiones (lectura inicial y grabación final)
Gracias y un saludo.

dec
15-10-2008, 11:18:24
Hola,

Es cuestión de usar una variable "global" en lugar de una "local". También podrías usar un miembro de un objeto, que, se mantuviera disponible mientras durase la vida de la aplicación. Es decir, si empleas una variable local, evidentemente, cuando se salga de su ámbito, dicha variable será liberada, pero, si usas una variable global no será así. Dicha variable sería del tipo "TIniFile", y te permitiría hacer justo lo que dices: acceder al disco dos veces únicamente, cuando se lee el archivo INI, y cuando se guarda (si es necesario).

Bauhaus1975
15-10-2008, 12:11:36
OK. Entiendo lo del acceso global a la variable.
Y si he entendido bien, lo que dices es crear el objeto global al iniciar por ejemplo: ini := TiniFile.create(NombreArchivo); y liberarlo: ini.free al terminar la aplicación.
Pero, cuando haga un ini.WriteString o ini.ReadString ¿Realizará acceso a disco?

Otra soución podria ser volcar el contenido a una variable TDataSet para acceder en cualquier momento (en caso de que el acceso que antes comentaba supongo acceder a disco)

Neftali [Germán.Estévez]
15-10-2008, 12:18:37
También puedes usar el TMemIniFile.
Trabajas en memoria y cualdo quieres volcarlo todo a disco usas UpdateFile.

Delphius
15-10-2008, 14:51:29
Hola Bauhaus1975,
La clase que te comentaron puede trabajar sin problemas. Cuando se le pide acceder (lectura y/o escritura) a una sección, variable y/o dato lo que hace es abrir el archivo, hacer lo que deba hacer y cerrarlo.
En caso de que el archivo no exista lo crea.

Si lees la ayuda que proporciona Delphi sobre dicha clase tus dudas se evacuarán.

Creo que te estás haciendo demasiados problemas. Si necesitas tener los datos en memoria hay otras opciones: desde simples variables hasta clases diseñadas por ti que mantengan todo en memoria. Todo dependerá de cuanto, como y que estés guardando en el archivo ini. Si tienes muchas variables y secciones tal vez mantener simples variables no es lo más apropiado. En definitiva como tu convengas que es lo mejor y más fácil para ti.

Saludos,

rgstuamigo
15-10-2008, 20:04:44
Mira este tremendo Libro (http://www.intitec.com/varios/Delphi_al_limite.pdf) de trucos y demas en la pag 55 y 56 esta lo que quieres.Espero que te sirva:cool:

Bauhaus1975
15-10-2008, 21:02:58
Gracias por vuestra ayuda.
Creo que voy hacer caso de lo que me aconseja Neftali (por cierto, enhorabuena por tu sección de componentes) y usaré el TMemIniFile, que según he visto en la ayuda se asemeja a lo que necesito. Si me hiciera falta cubrir más funcionalidad crearé una clase que herede de TMemIniFile o TiniFile, y añada funcionalidad, como por ejemplo llevar almacenada cierta informacíón leida del ini en un array o un DataSet etc etc.
Gracias a todos.