[ vortex77 @ 11.06.2006. 22:00 ] @
Kako da snimim fajl sa proizvoljnom strukturom?
U Delfiju je to omoguceno sa "file of", ali kako to da obavim u C++? Potrebno mi je da proizvoljnu strukturu snimim kao takvu u fajl.
Pregledao sam nekoliko tema ali nisam nasao ni jedno resenje.....

Evo kako izgleda struktura:
Code:

typedef struct {
      TColor oPColor, oBColor;      
      TPenMode  oPMode;             
      int oWidth;                   
      AnsiString ime;               
      TPenStyle oPStile;             
      TBrushStyle oBStile;
      bool oFill;                   
      int oNKoord;                  
      int oType;                     
      int StartX,StartY,
          EndX,EndY, RoundX, RoundY; 
}Box;

[ Goran Arandjelovic @ 12.06.2006. 01:52 ] @
Recimo ovako...

Code:

/* NETESTIRANO */
#include <iostream>
#include <fstream>
using namespace std;

int main(int argc, char *argv[])
{
  Box mybox;
  Box mynewbox;
  fstream out,in;

  out.open("izlaz.out",ios::out|ios::binary);
  out.write((char*)&mybox, sizeof(Box));
  out.close();

  in.open("izlaz.out",ios::in|ios::binary);
  in.read((char*)&mynewbox, sizeof(Box));
  in.close();

  /* mynewbox i mybox bi ovde trebalo da budu identični */

  return(0);
}


Nadam se da je kod jasan... Proveri ga, pošto ja nisam.
[ NastyBoy @ 12.06.2006. 13:09 ] @
Takav pristup nece raiti u ovom sluchaju, jer chlanovi strukture nisu POD.

C++Builder ima metode za serijalizaciju svojih klasa, pogledaj u helpu.
[ Goran Arandjelovic @ 12.06.2006. 21:06 ] @
Pretpostavio sam da neće moći zbog toga.
Možeš li da objasniš u čemu se razlikuju objekti (članovi) koji nisu POD od onih koji to jesu?
Da li zbog toga što non-POD objekti nisu kontinualni u memoriji? Ali u okviru prvog pitanja uzmi u obzir da taj objekat ne sadrži bilo kakve pointere.
---
Pretpostavljam da u BCB-u postoji neka posebna Stream klasa koja može uraditi željenu stvar...
[ X Files @ 12.06.2006. 21:29 ] @
Kod BCB-a postoje potpuno zasebne komponente za serijalizaciju i ne postoji nikakav
automatizam, kao kod .NET-a.

Cak i 'prostije' strukture podataka tipa TFont u BCB-u nije lako zasigurno snimiti jednim
potezom. Ne znam zbog cega je to tako (potrudicu se da saznam), ali moguce da je to
povezano sa Object Pascalom na kome je uradjem VCL.

Ono sto znam je da i 'profesionalci' za BCB, kada je u pitanju stream-ovanje podataka,
koriste parcijalna resenja (za svaki tip podataka posebno) tipa:
http://tinyurl.com/rn3ub