previous next Up Title Contents Index

19.1.3 Jäsenistön osuus talletuksesta

Jäsenistö ei enää paljoa pysty tehtäviään välttelemään:

talletus.2\jasenet.cpp - talletus

	//-------------------------------------------------------------------------
	int cJasenet::TeeBak(const string &bak_tark)
	{
	  bak_nimi = Tiedoston_nimi();
	  vaihda_tarkennin(bak_nimi,bak_tark);
	
	  remove(bak_nimi); /* Vanha .BAK täytyy poistaa jotta rename toimii */
	  return rename(Tiedoston_nimi(),bak_nimi);
	}
	...
	//-------------------------------------------------------------------------
	const char *cJasenet::talleta(const string &tied)
	{
	  if ( !muutettu ) return NULL;
	  string tiedosto(tied); if ( tied == "" ) tiedosto = tiedoston_nimi;
	  ofstream f(tiedosto.c_str());
	
	  if ( !f ) return TIED_EI_AUKEA;
	
	  f << koko_nimi << endl;
	  f << max_lkm << endl;
	
	  if ( !f ) return OTS_EI_KIRJ;
	
	  for (int i=0; i<lkm; i++) {
	    f << *alkiot[i] << endl;
	    if ( !f ) return ALKIO_EI_KIRJ;
	  }
	
	  muutettu = 0;
	  tiedoston_nimi = tiedosto;
	  return NULL;
	}
Myös kommentit kannattaisi tavalla tai toisella siirtää vanhasta alkuperäisestä tiedostosta. Tätä varten voisimme kirjoittaa aliohjelman
	kopioi_kommentit(f,bak_nimi) 
Myöhemmin ehkä käytännössä huomataan, että olisi siistimpää tulostaa kenttiä hieman täsmällisemmin allekkain - kuten alkuperäisessä suunnitelmassa oli. Tämä voitaisiin toteuttaa mallirivin avulla, missä mallirivi on alkuperäisen tiedoston kommenteista luettu rivi. Tästä rivistä tutkitaan erotinmerkkien paikkoja ja pyritään saamaan erotinmerkit vastaaviin paikkoihin myös tulosjonossa.


previous next Up Title Contents Index