Poznámky k prográmkům

Program DialogApp je opraven, již se po spuštění neobjevuje "Assertion failed" ani žádné výjimky. Problém spočíval  v tom, že když se vytvoří soubor (CFile) a na něj navázaný CArchive, musí se archiv zrušit nebo zavřít (zavolat na něm metodu Close()) dříve než se zavře soubor. Archiv si bufferuje data, a tak po zavření souboru již nemá šanci poslední data do souboru zapsat.

{
  CFile soubor("dialogapp.data", CFile::modeRead);
  CString jmeno = "";
  CArchive arch(&soubor_r, CArchive::Mode::load);

  arch >> jmeno;

  arch.Close(); // pokud se nezavolá, až bude končit platnost
                // proměnné arch (na konci bloku), tak se bude
                // volat destruktor CArchive, ten se pokusí zapsat
                // data do již zavřeného souboru a to selže

  soubor.Close();

} // zde se volá destruktor CArchive