Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Глючит удаление записи из БД при повторном заполнении БД

14K
15 марта 2007 года
Shrekki89
23 / / 05.03.2007
Здравствуйте!
Я пишу прогу для работы с БД. БД - файл с записями типа structure.
Я написал алгоритм удаления записи из БД:

Код:
void udalenie()
 {
  FILE* f;
  FILE* newf;
  struct BD //BD - tip dannih dlia BD
   {
    int nomer; //nomer magazina
    string nazvanie; //naimenovanie tovara
    string artikul; //artikul tovara
    double cena; //cena edinici tovara
    int kolvo; //kolichestvo tovara
    int ID;
   } tovar1,tovar2; //tovar1 - dlia zapisi v "fnew"/// tovar2 - dlia zapisi v "f"
   int del;
   cout<<"Vvedite nazvanie BD";
   cin>>nazvanie_BD;
   strcat( nazvanie_BD, ".txt" );
   cout<<"Vvedite ID udaleiaemoi zapisi";
   cin>>del;    // del - ID udaliaemoi zapisi
   f=fopen(nazvanie_BD,"rb");
   newf=fopen("newf.txt","ab");
   rewind(f);
   rewind(newf);
   int eof,i=1;
   eof=feof(f);
  fread(&tovar1,sizeof(struct BD),1,f);
  eof=feof(f);
  while (eof==0)
   {
    if (tovar1.ID!=del)
     { tovar1.ID=i; fwrite(&tovar1,sizeof(struct BD),1,newf); i++;}
       fread(&tovar1,sizeof(struct BD),1,f);
       eof=feof(f);
   }
  fclose(f);
  fclose(newf);
  remove(nazvanie_BD);
  k=0;
  eof=0;
  f=fopen(nazvanie_BD,"ab");
  newf=fopen("newf.txt","rb");
  rewind(f);
  rewind(newf);
  fread(&tovar2,sizeof(struct BD),1,newf);
  while (eof==0)
   {
    if  (stroki_v_BD("newf.txt")!=0)    // (tovar2.ID!=-1)
     {
      fwrite(&tovar2,sizeof(struct BD),1,f);
      fread(&tovar2,sizeof(struct BD),1,newf);
      eof=feof(newf);
      k++;
     }
    else
     {
      fclose(f);
      remove(nazvanie_BD);
      f=fopen(nazvanie_BD,"ab");
      break;
     }
   }
  fclose(f);
  fclose(newf);
  remove("newf.txt");
}


Алгоритм чуток длинноватый, но работает. Но когда удаляешь все записи из БД, а потом снова их добавляешь (с помощью алгоритма Добавить Запись), то они перестают удаляться. Вместо этого в исходную БД добавляются все записи, кроме удаляемой.
Я все проверил, но так и не нашел ошибки.
Подскажите, в чем может быть дело? :confused:
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог