Estimados compañeros,
Me enfrento a la problemática de guardar clases/objetos que contienen listas dinámicas como atributos en ficheros. He encontrado pistas en Internet sobre cómo realizar guardados de objetos, pero al contener referencias a memoria la cosa cambia.
Creo que esta pregunta se puede responder de manera genérica para Delphi y no únicamente para FreePascal/Lazarus.
¿Alguna pista o sugerencia sobre cómo almacenar clases/objetos con la información contenida por sus punteros en un fichero?
Guardar clases/objetos con punteros en ficheros
Comenzado por
karj
, oct 30 2010 04:05
7 respuestas en este tema
#1
Escrito 30 octubre 2010 - 04:05
#2
Escrito 31 octubre 2010 - 09:32
Arrojo un poco más de luz, ya que creo que alguien ha debido de resolver este problema para Delphi (no creo que haya diferencia).
En este enlace explica cómo guardar y cargar un objeto desde un fichero:
El problema es que en mi caso quisiera almacenar también listas dinámicas, y dado que los objetos que voy a guardar contienen punteros a los primeros elementos me gustaría guardar también las listas como si fuesen un atributo más.
Estoy seguro de que alguien se ha tenido que enfrentar a este problema o uno similiar. ¿Alguna pista?
En este enlace explica cómo guardar y cargar un objeto desde un fichero:
delphi
var Buffer: array[0..10000] of Byte; begin with TFileStream.Create('SomeFile.bin', fmCreate) do try Seek('Hello'); Write(Buffer, SizeOf(Buffer)); finally Free; end; end;
El problema es que en mi caso quisiera almacenar también listas dinámicas, y dado que los objetos que voy a guardar contienen punteros a los primeros elementos me gustaría guardar también las listas como si fuesen un atributo más.
Estoy seguro de que alguien se ha tenido que enfrentar a este problema o uno similiar. ¿Alguna pista?
#3
Escrito 31 octubre 2010 - 01:38
He seguido indagando y he llegado a las clases TCollection y TCollectionItem, que permiten tener listas (o colecciones) que sean grabadas en un Stream y, por tanto, en un fichero.
Voy a seguir trabajando en esa línea. Supongo que en breves pondré una duda en la sección POO de Delphi, dado que en Java y otros lenguajes en los cuales he programado Orientado a Objetos no se dispone de "property" ni "reads" y "writes".
Un saludo.
Voy a seguir trabajando en esa línea. Supongo que en breves pondré una duda en la sección POO de Delphi, dado que en Java y otros lenguajes en los cuales he programado Orientado a Objetos no se dispone de "property" ni "reads" y "writes".
Un saludo.
#4
Escrito 01 noviembre 2010 - 10:05
Ya tengo el asunto encaminado. Estoy creando un pequeño ejemplo de concepto. En cuanto esté listo lo subo para referencia futura.
#5
Escrito 05 noviembre 2010 - 05:21
La solución iba más encaminada hacia TList. He realizado un ejemplo y lo he colgado en mi repositorio en GitHub:
https://github.com/l...jectListExample
El código no está del todo pulido, pero como estoy desarrollando otro proyecto no creo que lo mejore.
No hay indicada licencia, pero será de dominio público. Me he basado en la documentación sobre TList por Mark Jhonson.
https://github.com/l...jectListExample
El código no está del todo pulido, pero como estoy desarrollando otro proyecto no creo que lo mejore.
No hay indicada licencia, pero será de dominio público. Me he basado en la documentación sobre TList por Mark Jhonson.
#6
Escrito 05 noviembre 2010 - 07:18
De tener más conocimientos sobre el tema hubiera sido bueno participar en el desde un principio, sin embargo hay que destacar la solución y el ejemplo
Saludos!
Saludos!
#7
Escrito 05 noviembre 2010 - 07:55
Bien bueno amigo, gracias por compartirlo
#8
Escrito 05 noviembre 2010 - 08:33
Gracias por compartir karj, interesante tema.
Saludos
Saludos