Поиск:

Ответ в темуСоздание новой темы Создание опроса
> работа с потоками 
:(
    Опции темы
ermi
Дата 23.11.2006, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 23.11.2006

Репутация: нет
Всего: нет



Привет всем!
Кто нибудь подскажите как можно удалить из потока?
Например уменя есть данные о студентах,записанные в поток.необходимо удалить данные одного студента?
Заранее спасибо!!!
PM MAIL   Вверх
Partizan
Дата 23.11.2006, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 7
Всего: 67



?!?!?!?!?!?!?!?!??!?!?!??!! smile 
что подразумевается под потоком в описании проблемы?
явно не классическое понятие потока....


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
ermi
Дата 23.11.2006, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 23.11.2006

Репутация: нет
Всего: нет



файловый поток
PM MAIL   Вверх
SenkraD
Дата 23.11.2006, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 9
Всего: 23



ermi, в смысле fstream?
Или что ты под этим подразумеваешь?


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
ermi
Дата 23.11.2006, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 23.11.2006

Репутация: нет
Всего: нет



да  fstream!!

PM MAIL   Вверх
Partizan
Дата 23.11.2006, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 7
Всего: 67



читаем из файла всё что там есть....удаляем то что нам не надо....записываем обратно в файл...


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
ermi
Дата 23.11.2006, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 23.11.2006

Репутация: нет
Всего: нет



как удалять?
какую функцию надо использовать?

Добавлено @ 21:54 
Мне сказали что в си++ нету функции для удаления из файла.
PM MAIL   Вверх
Partizan
Дата 23.11.2006, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 7
Всего: 67



пффф...читаем всё что есть в файле....
стиараем файл...
записываем туда только то что нам нужно


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
SenkraD
Дата 23.11.2006, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 9
Всего: 23



Почему не используешь TStringList?
Код

TStringList *StudList;

StudList = new TStringList();
StudList->LoadFromFile("stud.txt");
for(int i=0; i<StudList->Count; i++)
{
    int iPos;
    iPos = StudList->Strings[i].Pos("<параметр поиска студента>");
    if(iPos != -1)
        StudList->Delete(i);
}
StudList->SaveToFile("stud.txt");
StudList->Free();



--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
ermi
Дата 23.11.2006, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 23.11.2006

Репутация: нет
Всего: нет



У меня есть данные о студентах,сохраненые в файл

 ofstream outfile;
 outfile.open("pers.txt",ios::app|ios::binary);
 outfile.write((char*)this,sizeof(*this));

мне надо удалить данные одного студента.
Я начинеаю читать из файла
    ifstream infile; 
    infile.open("pers.txt");
    infile.seekg(numb*sizeof(add));
    infile.read((char*)this,sizeof(*this));
 
и мне надо записать в другой файл  данные всех студентов кроме одного.
Если можно толучше напишите пример smile

Добавлено @ 22:09 
как это  сделать???

PM MAIL   Вверх
ermi
Дата 23.11.2006, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 23.11.2006

Репутация: нет
Всего: нет



короче вот у меня прога

код

/////////////////////////////////////////////class dannie////////////////////////////

class dannie
{public:
 char name[10],surname[10],otch[10];
 int chislo_rogd,mes_rogd,god_rogd;
 int god_post;
 char fakult[5],gryppa;
 int n_zach;int semes[10];
 char predmet[10];
 int ocenka;

};
//////////////////////////////vvod//////////////////////////////////////////////
class vvod:public dannie
{public:
 //------getdata--------------
 void getdata()
 {                    //vvod danix
  cout<<"\nVvedite dannie studenta: ";
  cout<<"\nName: ";cin>>name;
  cout<<"\nSurname: ";cin>>surname;
  cout<<"\nOtcestvo:";cin>>otch;
  cout<<"\n\nVvedite dannie rogdenia studenta:";
  cout<<"\n born day: ";cin>>chislo_rogd;
  cout<<"\n born month: "; cin>>mes_rogd;
  cout<<"\n born year: ";  cin>>god_rogd;
  cout<<"\n\nvvedite god postypleniya:"; cin>>god_post;
  cout<<"\n vvedite facultet: "; cin>>fakult;
  cout<<"\n vvedite nomer  grouppi: "; cin>>gryppa;
  cout<<"\n vvedite nomer zachotki : ";cin>>n_zach;
  int i,j; char l,k;
  //vvod semestra,predmetov i ocenok
  for(i=1;i<=10;)
  {cout<<"semestr["<<i<<"]";
   for(j=1;j<=10;)
   {cout<<"\n vvedite predmet:"; cin>>predmet;
    cout<<"\n vvedite ocenky"; cin>>ocenka;
    cout<<"\n eche predmet? y/n";cin>>l;
    if (l=='y') j++; else  break;
   }
   cout<<"\n SLEDYUYCHI' SEMESTR? y/n ";cin>>k;
   if (k=='y') i++;
   else break;
  };
 };
};
 //------------------------------------------------
 //////////////////////////////////////сохранение///////////////////////////////////////
class add:public vvod
{
 public:
 void diskout()
{
 ofstream outfile;
 outfile.open("pers.txt",ios::app|ios::binary);
 if(!outfile)
 {cerr<<"\n oshibka pri otkritii fila";exit(1);}
 outfile.write((char*)this,sizeof(*this));
}
};


/////////////////////////////////////prosmotr//////////////////////////////////////

class procmotr:public dannie
{public:
 void data(void)
 {cout<<"\nName: "<<name;
  cout<<"\nSurname: "<<surname;
  cout<<"\nOtcestvo:"<<otch;
  cout<<"\n born day: "<<chislo_rogd;
  cout<<"\n born month: "<<mes_rogd;
  cout<<"\n born year: "<<god_rogd;
  cout<<"\n\n god postypleniya:"<<god_post;
  cout<<"\n  facultet: "<<fakult;
  cout<<"\n  nomer  grouppi: "<<gryppa;
  cout<<"\n  nomer zachotki : "<<n_zach; int l,k;
 };

 void data(int);
};

 //---------------------------------------------------------
void procmotr::data(int pn)
{
 ifstream infile;
 infile.open("pers.txt",ios::binary);
 if(!infile)
 {cerr<<"\n oshibka pri otkritii fila";exit(1);}
 infile.seekg(pn*sizeof(add));
 infile.read((char*)this,sizeof(*this));
}

class nfile    //c4itaet ckoka filov cyshestvyet
{   public:
int diskcout()
{
 ifstream infile;
 infile.open("pers.txt",ios::binary);
 infile.seekg(0,ios::end);
 return(int)infile.tellg()/sizeof(dannie);
}
};


///////////////////////////////main//////////////////////////////////
 int main()
{add p;procmotr d;nfile l;ydalenie dd;
 int fff;
 for (int i=1;;)
 {cout<<"\n 1:Dobavit' stydenta";
  cout<<"\n 2:Ydalit' stydenta";
  cout<<"\n 3:prosmotr";
  cout<<"\n 4:sortirovat";
  cout<<"\n 5:o programme";
  cout<<"\n 6:vixod";
  cout<<"\n\n\n VIBRAT':";
  cin>>fff;
  if(fff==1)
  {clrscr();char ch; do {p.getdata(); p.diskout();
    cout<<"prodolgit y/n?"; cin>>ch; }while(ch=='y');
   cout<<"vernytcia v menu:?y/n"; char b; cin>>b;
   if(b=='y'){clrscr();i++;}  else   if (b=='n'){break;} };
  //2
  if(fff==3)
  {clrscr(); int n=l.diskcout();
   if (n==39045157) {cout<<"v fale net dannix"; cout<<"\n\nvernytcia v menu:?y/n";
    char b;  cin>>b;
    if(b=='y'){clrscr();i++;} else  if (b=='n')break; } else
    if(n!=0){cout<<"v pa'le"<<n<<"chelovek\n"; int gg; cout<<"Kako' phail hatite prosmotret'?";
   cin>>gg; d.data(gg); d.data();
   cout<<"\n\nvernytcia v menu:?y/n";
   char b; cin>>b;
   if(b=='y'){clrscr();i++;}
   else if (b=='n'){break;}};};
  if(fff==5) {clrscr(); cout<<"\n\nProgrammy sostavila Zakaryan Hermine ";
   cout<<"\n\n\nvernytcia v menu:?y/n"; char b;  cin>>b;
   if(b=='y'){clrscr();i++;} else  if (b=='n'){break;}}
   if(fff==6){break;};};return 0;}



Напишите мне как сделать удаление плиз.
PM MAIL   Вверх
SenkraD
Дата 23.11.2006, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 9
Всего: 23



я так полагаю ты консоль пишешь...

Код

 ofstream outfile;
 outfile.open("NewPersList.txt",ios::app|ios::binary);

 ifstream infile; 
 infile.open("pers.txt");

int BadStudentID;

cin >> "input student id: " >> BadStudentID;

char buff[255];

while(!infile.eof())
{
   infile.getline(buff, sizeof(buff));
   if(infile.tellg() == BadStudentID) continue;
   else
   {
       outfile.write(buff, sizeof(buff));
   }   
}


Кажись так, но 100% гарантии не дам и вообще тебе надо было бы  этот вопрос на общих вопросах о С++ задавать

З.Ы. но предыдущий пост в Builder должен работать
З.З.Ы. а еще можно тэги юзать для читабельности кода ;)

Это сообщение отредактировал(а) SenkraD - 23.11.2006, 22:35


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
ermi
Дата 23.11.2006, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 23.11.2006

Репутация: нет
Всего: нет



Спасибо большое.
ща проверю.

Добавлено @ 22:44 
Неа не пашет.
Ща попробую разобраться.
PM MAIL   Вверх
SenkraD
Дата 23.11.2006, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 9
Всего: 23



Я после поста немного код поправил, попробуй еще раз.
Я там глуккнулся


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
ermi
Дата 23.11.2006, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 23.11.2006

Репутация: нет
Всего: нет



А как можно переименовать функци NewPersList.txt на Pers.txt

Добавлено @ 23:11 
пордон.то есть через какую функцию можно перименовать файл
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0521 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.