Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Leer fichero ini en memoria (https://www.clubdelphi.com/foros/showthread.php?t=89537)

oscjae 09-12-2015 17:25:25

Leer fichero ini en memoria
 
Hola, he estado mirando por el foro y no he encontrado ningun hilo que pudiera resolverme esta duda:

Tengo una tabla de una base de datos (firebird) en la que hay un campo blob, en ese campo guardo archivos ".ini", el problema o la duda esta en cuanto quiero leerlo, hay alguna forma de leerlo sin crear ese archivo fisicamente en disco?, es decir, si creo una variable TMemoryStream y con el campo blob uso SaveToStream(variable), como puedo utilizar con la clase TIniFile o alguna otra clase esa variable y leer las secciones, claves, etc... sin crear el archivo en disco?

Gracias.

Neftali [Germán.Estévez] 09-12-2015 18:32:18

¿Has revisado la clase TMemIniFile?

oscjae 09-12-2015 18:43:20

Si, al poner
Código Delphi [-]
vFichero:=TMemIniFile.Create('C:\fichero.ini');
Me refiero justo a eso, el fichero tiene que estar en disco, y lo que me gustaria es que no tuviera que guardarlo en disco, salvarlo en una variable Stream, desde el campo blob y poder leer ese fichero guardado en la variable stream sin grabarlo fisciamente en disco, la verdad, no se si es posible no apoyarme en disco.

Neftali [Germán.Estévez] 09-12-2015 18:48:28

Esto no lo aseguro, pero es posible que sino llamas al UpdateFile, nunca llegue a guardarse en disco.

AgustinOrtu 09-12-2015 19:02:45

TMemIniFile tiene un nombre que a primera vista puede prestar a confusión; en realidad la única diferencia con TIniFile es que los cambios se mantienen en memoria y no son grabados en disco hasta llamar a UpdateFile; esto es útil para por ej ir obteniendo valores y luego validar, si todo va bien, grabar

Con respecto a la pregunta original no se puede hacer, por lo menos no con la RTL de Delphi, ni ninguna biblioteca que conozca

Lo mejor que podes hacer es obtener y grabar a disco el blob, luego instanciar el ini

Ñuño Martínez 09-12-2015 20:57:27

Quizá puedas salir del paso usando directamente un TStringList. Me explico: la propiedad "Values" de dicha clase (o mejor dicho, de su antecesora) permite acceder a pares"nombre=valor", de forma similar a los archivos INI. El problema es que no maneja claves o secciones "[secion]" valores por defecto, pero quizá pueda hacerse algo.

AgustinOrtu 09-12-2015 21:25:50

O mejor aun, crea una tabla/sqlite

oscjae 10-12-2015 01:07:22

Respecto al StringList lo pensé en su momento, pero no me sirve, es un fichero ini muy extenso y repite claves bastantes veces, si no hubiera sido una buena solución, y respecto a la base de datos sqlite no podría ser, de hecho yo leo el ini de un campo blob, tengo que cargar los valores en una clase, mi intención es no pasar por disco para leer ese ini, pero no voy a tener mas remedio.

Muchas gracias por los comentarios, un saludo.


La franja horaria es GMT +2. Ahora son las 22:07:26.

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