Array
(
)

salvar um objeto em um arquivo

Vitor^_^
   - 24 nov 2005

Pessoal, tenho uma dúvida sobre orientação a objetos:

seguinte, na época do turbo pascal, se agente criasse um record do tipo ´minhaEstrutura´, para criar um arquivo disso era soh fazer um file of minhaestrutura...

agora, a dúvida:

suponhamos que eu tenha 3 classes: listaum, listinha e itenzinhos. A classe listaum tem uma propriedade lista, que pode conter n listinhas, e a classe listinha possui a propriedade itens, que pode conter n itenzinhos.

Se eu tenho um objeto do tipo listaum instanciado, com uma lista de n listinhas instanciadas, e cada listinha tem x itenzinhos, todos instanciados em tempo de execução, como eu faço pra salvar o listaum em um arquivo, mas quando carregar esse arquivo ele preencher o listaum com todos os seus itens e subitens, instanciando-os?



Fui confuso, né? ..... axu q nem eu me entendo...

se alguem puder me dar uma luz ^^


Siam
   - 24 nov 2005

Essas listas são TStrings ?
Vc diz salvar pelo SaveToFile ?


Vitor^_^
   - 24 nov 2005

não são tstrings, são classes criadas por mim, descendentes, por exemplo, de TobjectList.

Não penso em savetofile, mas sim num esquema que salvasse todos os itens e subitens do meu objeto.


Siam
   - 24 nov 2005

Não estou certo, mas acho que vc vai ter que escrever seus próprios métodos SaveToFile e LoadFromFile para fazer isso.
Se existir algo parecido, vou aproveitar este tópico p/ aprender também.


Nildo
   - 24 nov 2005


Citação:
Pessoal, tenho uma dúvida sobre orientação a objetos:

seguinte, na época do turbo pascal, se agente criasse um record do tipo ´minhaEstrutura´, para criar um arquivo disso era soh fazer um file of minhaestrutura...

agora, a dúvida:

suponhamos que eu tenha 3 classes: listaum, listinha e itenzinhos. A classe listaum tem uma propriedade lista, que pode conter n listinhas, e a classe listinha possui a propriedade itens, que pode conter n itenzinhos.

Se eu tenho um objeto do tipo listaum instanciado, com uma lista de n listinhas instanciadas, e cada listinha tem x itenzinhos, todos instanciados em tempo de execução, como eu faço pra salvar o listaum em um arquivo, mas quando carregar esse arquivo ele preencher o listaum com todos os seus itens e subitens, instanciando-os?



Fui confuso, né? ..... axu q nem eu me entendo...

se alguem puder me dar uma luz ^^


Você não pode fazer isso com classes. Você tem que escrever seu próprio método que faça isso. Isso porque as classes são de tamanho variáveis. Com um RECORD você consegue pois ele tem um tamanho fixo na memória (isso se você não usar coisas do tipo String por exemplo. Só funcionaria se fosse do tipo String[ N ]).

Isso tudo porque as classes fazem referencias a diversos locais da memória, diferente de um record, que tem seu espaço pré-definido.


Vitor^_^
   - 24 nov 2005

o problema eh fazer o método pra salvar os dados desses objetos então.... deve ser mais facil eu gravar num banco de dados cada uma das propriedades de cada um dos itens, e quando precisar, varo a tabela criando as instancias e itens dos meus objetos.