Persistir objetos em arquivos tipados/binários
27/05/2008
0
Olá pessoal.
Estou escrevendo uma pequena biblioteca gráfica baseada em GDI para manipulação e reprodução de sprites animados.
Tenho uma classe TSprite que possui uma lista de ponteiros para vários TBitmap (que contém os quadros da animação) e tenho uma classe TSpriteList que é, basicamente uma lista especializada para manipular instâncias de TSprite.
Pois bem... tenho uma classe TSpriteLib que será responsável, entre outras coisas, pela persistência de instâncias de TSpriteList para o disco (devendo gravar, todas as propriedades e todos os bitmaps num arquivo binário).
A minha dúvida é: como persistir uma instância de um objeto para um arquivo binário? Existe algum tipo de arquivo tipado capaz de fazer isso (como no caso do “file of TMyRecord”?)
Eu sei que com ´record´ dá pra se conseguir isto muito fácil (como no trecho de código abaixo), mas e com objetos?
Muito obrigado.
Estou escrevendo uma pequena biblioteca gráfica baseada em GDI para manipulação e reprodução de sprites animados.
Tenho uma classe TSprite que possui uma lista de ponteiros para vários TBitmap (que contém os quadros da animação) e tenho uma classe TSpriteList que é, basicamente uma lista especializada para manipular instâncias de TSprite.
Pois bem... tenho uma classe TSpriteLib que será responsável, entre outras coisas, pela persistência de instâncias de TSpriteList para o disco (devendo gravar, todas as propriedades e todos os bitmaps num arquivo binário).
A minha dúvida é: como persistir uma instância de um objeto para um arquivo binário? Existe algum tipo de arquivo tipado capaz de fazer isso (como no caso do “file of TMyRecord”?)
Eu sei que com ´record´ dá pra se conseguir isto muito fácil (como no trecho de código abaixo), mas e com objetos?
Muito obrigado.
Type TMyRecord = Record; (...) Var F : file of TMyRecord; r : TMyRecord; (...) AssignFile(f, "filename.bin"); Reset(F); Write(F, r); CloseFile(F);
Fabianosales
Curtir tópico
+ 0
Responder
Posts
27/05/2008
Massuda
Como a quantidade de dados a serem armazenados de cada classe varia, um arquivo do tipo ´file of´ não serve, pois ele assume que cada registro tem tamanho fixo (o tamanho do record).
Sugiro que você dê uma olhada nos métodos WriteComponent e ReadComponent da classe TStream.
Sugiro que você dê uma olhada nos métodos WriteComponent e ReadComponent da classe TStream.
Responder
Clique aqui para fazer login e interagir na Comunidade :)