Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как удалить строку ??? Удаление строки 
V
    Опции темы
I0207
  Дата 1.2.2006, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Люди!!!! Поможите!!!! Как удалить строку из текстового файла??? киньте прогу кто может!!!! Файл наз-ся phone.txt . Как удалить строку с именем Игорь(например)???
PM MAIL   Вверх
_hunter
Дата 1.2.2006, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



читаеш все строки из файла и пишеш их в другой файл. если строка равна "Игорь(например)" -- не пишеш ее в другой файл.
потом другой файл переименовываеш в "наз-ся phone.txt".
( простейший вариант без всякого подобия кеширования )


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
oper54
Дата 1.2.2006, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Или так сказать, с кешированием smile
В билдере знаю есть чудный класс TStringList (список AnsiString), а у него метод LoadFile(точно не помню), ну а дальше совсем просто, удаляешь елемент списка с в стоке которого есть имя Игорь(AnsiString дает возможность искать в строке подстроку), потом перезаписываешь файл
PM MAIL   Вверх
I0207
Дата 2.2.2006, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



smile Hynter, а как это реализовать??? помоги с прогой, век помнить буду!!!
Добавлено @ 11:15
Oper 54, как это сделать??? Поможи а???? smile
А можно как нибудь через Консоль Визард распечатать txt файл??? а лучше то что начёрном экране.
PM MAIL   Вверх
_hunter
Дата 2.2.2006, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



I0207, проги пишут не в этом разделе. тебе в раздел работа...
что такое " Консоль Визард"?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
AntonChik
Дата 2.2.2006, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



чел имеет ввиду File->New->Other->Console Wizard... удобная штука писать консольные приложения из-под Билдера... smile (блеснул умом)
--------------------
"Человек притаился за деревом. За широким огромным деревом. Он выглядывал тихонько и прятался. Но его никто не преследовал." (с) Хорги 
PM MAIL   Вверх
Artemon
Дата 2.2.2006, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

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




100% - рабочий код.

Код


TStringList * lst = new TStringList;

  if( !lst ) return;

  try         { lst->LoadFromFile("phone.txt"); }
  catch(...)  { return;                         }

  long int k;

  for( k = 0; k < lst->Count;  )
     {
     if( lst->Strings[k] == "123" ) { lst->Delete(k); continue; }
     k++;
     }

  try        { lst->SaveToFile("phone.txt"); }
  catch(...) {return;                        }

  if( lst ) delete lst;




Это сообщение отредактировал(а) Artemon - 2.2.2006, 16:39


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
I0207
Дата 2.2.2006, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Попробую, заранее спасибо, однако если не получится то попрошу помощи ещё!!! smile
PM MAIL   Вверх
I0207
Дата 2.2.2006, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



smile вот зараза не выходит ни как смотри в чём и как дела:
#define FNAME "c:\\phone.txt\0"
char fname[20]=FNAME;
FILE *out;
char fam[15];
char name[15];
char tel[9];
if((out=fopen(fname,"rt")) == NULL) //вот я открыл его в режиме чтения а дальше как быть???
{
printf("erorr");
getch();
}

???????????????????????

fclose(out);
PM MAIL   Вверх
Artemon
Дата 2.2.2006, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

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



Ты что на C перешел?

smile


Или ты на столько крут, что не хочешь пользоваться приведенным ранее кодом (причем рабочим) ?


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
I0207
Дата 2.2.2006, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



smile да не получется у меня им воспользоваться, обьясни как и что куда надо дописывать????
Добавлено @ 19:09
просто там я привел то что ранее было создано, а теперь просто к тому надо дописать удаление!!! Извиняюсь конечно за свою тупость,ну разъясни а??!!!??
Добавлено @ 19:15
Да если что я всё делаю в С++ Builder Console Wizard
PM MAIL   Вверх
I0207
Дата 2.2.2006, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Не получается у меня им воспользоваться, обьясни как что и куда надо дописывать???
PM MAIL   Вверх
Partizan
Дата 3.2.2006, 01:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


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

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



просто при создании консольного проекта надо подключить файл с объявлением класса TStringList smile


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


Новичок



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

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



А как это сделать??? В начале программы написать #include<TStringList>??? Или как иначе ???
PM MAIL   Вверх
Artemon
Дата 3.2.2006, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

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



Ладно так уж и быть.............

1) Забудь про cвою консоль.
2) Открыть C++Builder
3) File->New->Application;
4) С панели Standart перенеси кнопку (button) на форму.
5) Два раза щелкни мышью по кнопке - появится участок кода, в который нужно вставить приведенный ранее мной код.
6) File->Save.
7) В каиалоге, в котром сохранил программу создай свой любимый файл phone.txt
8) Пользуйся.


P.S.
Мне почему-то кажется что ты пишешь не в C++Builder а в turbo C.
Если это так - ты просто скажи, потому что решение будет совсем другим, мало того, код C++Builder в turbo C работать не будет.


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
I0207
Дата 3.2.2006, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



smile Огромное конечно спасибо, но нужно все сделать ч/з Consol Wizard -> поставить галочку напротив Си++ и прописывать всё в ручную, мне и в Turbo C пригодилось ды решение, так что прошу ПОМОЩИ!!!
PM MAIL   Вверх
Artemon
Дата 3.2.2006, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

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



Код


//---------------------------------------------------------------------------

#include <vcl.h>
#include <conio.h>
#include <stdio.h>

#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused

  bool LoadFileAndDelStr(AnsiString Fname, AnsiString Str);

  int main(int argc, char* argv[])
{
  if( !LoadFileAndDelStr("phone.txt", "Igor") )
    printf("\nError!!!");
  else
    printf("\nOK!!!");

  getch();

  return 0;
}
//---------------------------------------------------------------------------
  bool LoadFileAndDelStr(AnsiString Fname, AnsiString Str)
{

  TStringList * lst = new TStringList;

  if( !lst ) return false;

  try         { lst->LoadFromFile(Fname); }
  catch(...)  { return false;                   }

  long int k;

  for( k = 0; k < lst->Count;  )
     {
     if( lst->Strings[k] == Str ) { lst->Delete(k); continue; }
     k++;
     }

  try        { lst->SaveToFile(Fname); }
  catch(...) {return false;            }

  if( lst ) delete lst;

  return true;
}
//---------------------------------------------------------------------------



P.S.
В Turbo C этот код использовать нельзя.

Готовая программа.

Это сообщение отредактировал(а) Artemon - 3.2.2006, 10:08


--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
I0207
Дата 3.2.2006, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



smile Огомнейшее спасибо вроде по тихоньку получается, однако тема не закрыта, если что не выйдет я накалякую что-нибудь ещё!!! Ах, да а как этот файл вытащить на печать???
PM MAIL   Вверх
_hunter
Дата 3.2.2006, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



"на печать" это на принтер или в консоль?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
I0207
Дата 3.2.2006, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Удаляется та строка на которой только слово Igor, а мне желательно удалить строку в которой "Yunusov Igor" при этом введя с клавиатуры "Yunusov" Как такое сделать???(моя последняя просьба)
Добавлено @ 14:04
smile На печать на принтер
PM MAIL   Вверх
_hunter
Дата 3.2.2006, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



зависит от среды.
в Билдере у класса AnsiString есть метод Pos()
в С функция strstr()


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
I0207
Дата 3.2.2006, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



и что??? допустим у меня файл phone. txt как его распечатать???
Добавлено @ 15:07
Artemon!!! прочти пожалуйста после своего кода ОЧЕНЬ ВАЖНО!!!
PM MAIL   Вверх
_hunter
Дата 3.2.2006, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



скопируй его в файл с именем LPT1


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
I0207
Дата 3.2.2006, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Artemon посмотри Please!!!! посмотри после своей программы которую ты здесь написал!!!!
PM MAIL   Вверх
Artemon
Дата 4.2.2006, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

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



Замени строку

Код

if( lst->Strings[k] == Str ) { lst->Delete(k); continue; }


на

Код

if( lst->Strings[k].Pos(Str) ) { lst->Delete(k); continue; }




После этого изменения - программу будет удалять строки, в которых найдет заданную подстроку.




--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
I0207
Дата 5.2.2006, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



smile ARTEMON, ты супер мозг!!!!Круто всё работает, однако ещё одно пожелание есть, как сделать так чтобы Параметр удаления вводился с клавиатуры????
PM MAIL   Вверх
Artemon
Дата 6.2.2006, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

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



Добавь в начало main следующий код:

Код

char mas[1000]="";
printf("\nInput text: ");
scanf("%s", mas);


замени строку
Код

if( !LoadFileAndDelStr("phone.txt", "Igor") )


на

Код

if( !LoadFileAndDelStr("phone.txt", (AnsiString)mas)  )




--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
I0207
Дата 6.2.2006, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



smile Artemon, спасибо тебе огромное, не знаю что бы я без твоей помощи делал, КАК ХОРОШО ЧТО НА СВЕТЕ ЕСТЬ ТАКИЕ ЛЮДИ!!!(ЛЮДИЩА!!!!)
Спасибо всем, тема закрыта!!!
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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