Информатика и технология программирования


Шаг Ударим классом по двоичному файлу - часть 2



// существующей проверяется размерность старой записи.


// Если она недостаточна, новая запись добавляется в конец


// файла. Значение параметра mode=1 устанавливает режим


// проверки.


FPTR BinFile::VSZUpdate(void *buf ,int sz, int mode)
{
int oldsz;
FPTR pos;
pos = tellg();
if (mode)
{
read((BUF)&#38oldsz,sizeof(int));
if (!good()) return(FNULL);
if (oldsz &#60 sz) return(VSZAppend(buf,sz));
seekg(pos);
if (!good()) return(FNULL);
}
write((BUF)&#38sz,sizeof(int));
write((BUF)buf,sz);
if (!good()) return(FNULL);
return(pos);
}


FPTR BinFile::VSZAppend(void *buf ,int sz)
{
FPTR pos;
if ((pos = Size()) ==FNULL) return(FNULL);
write((BUF)&#38sz,sizeof(int));
write((BUF)buf,sz);
if (!good()) return(FNULL);
return(pos);
}




Начало  Назад  Вперед



Книжный магазин