Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

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);
	}
	...
	//-------------------------------------------------------------------------
	string cJasenet::talleta(const string &tied)
	{
	  if ( !muutettu ) return "";
	  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 "";
	}

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.


Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys