С Новым годом! Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/30: Рейтинг темы: голосов - 30, средняя оценка - 4.60
7 / 7 / 0
Регистрация: 06.03.2011
Сообщений: 177
1

Поиск строки в файле и ее удаление

13.12.2011, 18:02. Показов 6148. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Уважаемые форумчане, подскажите как найти все строки в файле (edit.txt) начинающиеся со слова connect и удалить их.

Тоесть содержание не отредактированного файла может быть такое:

Привет Вася!
Привет!
connect 127.0.0.1
Пока Вася!
connect 127.0.0.2
Пока!

Отредактированный:

Привет Вася!
Привет!
Пока Вася!
Пока!

p.s. Надо выполнить в VCL. Заранее спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.12.2011, 18:02
Ответы с готовыми решениями:

Поиск и удаление строки в файле
Ребят может помочь с кодом для поиска и удаления строки в файле. Надо реализовать код, так чтобы...

Поиск строки в файле и ее удаление
Добрый вечер Всем! Пишу небольшую программу для проекта, осталось написать код для одной кнопки,...

Поиск по заданному выражению строки в файле и удаление найденной строки и нескольких прилежащих к ней строк
Доброго времени суток! Помогите, пожалуйста, разобраться. У меня лог файл, из которого мне нужно...

удаление строки в текстовом файле и поиск.
Здарова всем! У меня проблема с написанием кода в Паскале! 1.Вобщем как можно удалить строку...

16
498 / 251 / 56
Регистрация: 16.06.2011
Сообщений: 904
13.12.2011, 18:12 2
Делфи под рукой нет, код собран на коленях
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var
  List: TStringList;
  i: integer;
begin
  try
    List:=TStringList.Create;
    List.LoadFromFile('edit.txt');    
  except
    ShowMessage('Какая-то ошибка :)!');
  end;
  for i:=0 to List.Count-1 do
    begin
      if Pos(List[i], 'connect')<>0 then Delete(List[i]);
    end;
    List.SaveToFile('edit.txt');
    List.Free;
 end;
1
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
13.12.2011, 18:37 3
Я бы дополнил код HyperZen
Delphi
1
2
3
4
  for i:=0 to List.Count-1 do
    begin
      if Pos(List.String[i], 'connect')=1 then List.Delete(i);
    end;
Pos(List.String[i], 'connect')=1
для того чтобы точно знать что оно в начале строки
1
7 / 7 / 0
Регистрация: 06.03.2011
Сообщений: 177
13.12.2011, 18:44  [ТС] 4
Выдает ошибку в этой строке: if Pos(List[i], 'connect')<>0 then Delete(List[i]);
[Error] Unit1.pas(39): Not enough actual parameters
Подскажите что делать? А за ответ спасибо!
0
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
13.12.2011, 18:45 5
предыдущий ответ внимательно посмотри
Цитата Сообщение от igoriy Посмотреть сообщение
if Pos(List.String[i], 'connect')=1 then List.Delete(i);
1
7 / 7 / 0
Регистрация: 06.03.2011
Сообщений: 177
13.12.2011, 18:48  [ТС] 6
А в вашем варианте такая ошибка: [Error] Unit1.pas(39): Identifier expected but 'STRING' found, может я что-то не то делаю?
0
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
13.12.2011, 18:50 7
виноват
Delphi
1
if Pos(List.Strings[i], 'connect')=1 then List.Delete(i);
буковку s забыл в strings
1
498 / 251 / 56
Регистрация: 16.06.2011
Сообщений: 904
13.12.2011, 18:55 8
У TStringList есть метод Find, можно использовать его, но необходимо отсортировать список, (TStringList.Sort), повторюсь: Делфи нет, поэтому могут быть ошибки:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var
  List: TStringList;
  i: integer;
begin
  try
    List:=TStringList.Create;
    List.LoadFromFile('edit.txt');    
    List.Sort;
  except
    ShowMessage('Какая-то ошибка :)!');
  end;
  for i:=0 to List.Count-1 do
    begin
      if List(Find(List.Strings[i]), 'connect') then Delete(List[i]);
    end;
    List.SaveToFile('edit.txt');
    List.Free;
 end;
Если список не отсортирован, то тоже есть функция поиска: IndexOf(Text):

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var
  List: TStringList;
  i: integer;
begin
  try
    List:=TStringList.Create;
    List.LoadFromFile('edit.txt');    
//    List.Sort;  // тут сортировать не нужно
  except
    ShowMessage('Какая-то ошибка :)!');
  end;
  for i:=0 to List.Count-1 do
    begin
      if List.IndexOf('connect')>0 then Delete(List[i]);
    end;
    List.SaveToFile('edit.txt');
    List.Free;
 end;
1
7 / 7 / 0
Регистрация: 06.03.2011
Сообщений: 177
13.12.2011, 18:55  [ТС] 9
igoriy, пять проблемка, пишит [Warning] Unit1.pas(37): Variable 'List' might not have been initialized. Файл не обрабатывает. Блин, извините если напрягаю...
0
7 / 7 / 0
Регистрация: 06.03.2011
Сообщений: 177
13.12.2011, 18:58  [ТС] 10
Сек. Сейчас еще этот варант проверю.


HyperZen, два представленных кода не рабочие...
0
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
13.12.2011, 19:00 11
вот так попробуй
Delphi
1
2
3
4
5
begin
List:=TStringList.Create;//вот эту строку переставь
  try
    
    List.LoadFromFile('edit.txt');
0
498 / 251 / 56
Регистрация: 16.06.2011
Сообщений: 904
13.12.2011, 19:01 12
Ну извини тогда Ошибки в браузере править тяжело
Я на работе сижу тут ничерта нет, кроме Оперы
1
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
13.12.2011, 19:02 13
и еще рассказывай как нерабочесть(во загнул) проявляется
1
498 / 251 / 56
Регистрация: 16.06.2011
Сообщений: 904
15.12.2011, 08:48 14
Добрался до Делфи Держи рабочий код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TForm1.Button1Click(Sender: TObject);
var
  List: TStringList;
  i: integer;
begin
  try
    List:=TStringList.Create;
    List.LoadFromFile('edit.txt');
  except
    ShowMessage('Какая-то ошибка :)!');
  end;
  for i:=List.Count-1 downto 0 do
    begin
      if Pos('connect', List.Strings[i])<>0 then List.Delete(i);
    end;
    List.SaveToFile('edit.txt');
    List.Free;
 end;
1
7 / 7 / 0
Регистрация: 06.03.2011
Сообщений: 177
18.12.2011, 16:51  [ТС] 15
HyperZen, спасибо. Проверил , все работает.

Добавлено через 33 минуты
Как выбрать путь к файлу с опендиалога? Заранее спасибо!
0
498 / 251 / 56
Регистрация: 16.06.2011
Сообщений: 904
18.12.2011, 19:50 16
Delphi
1
2
3
4
5
6
7
8
procedure TForm1.Button1Click(Sender: TObject);
var
  FileName: string;
begin
  if not OpenDialog1.Execute then Exit;  // чтоб ошибка не возникала если пользователь нажмет "отмену" в опендиалоге
  FileName:=OpenDialog1.FileName;
//  далее используй имя переменной FileName
end;
1
0 / 0 / 0
Регистрация: 18.04.2013
Сообщений: 16
18.04.2013, 18:22 17
Подскажите пожалуйста,как в этом случае найти подстроку в строке в файле, и если найдена,то удалить строку
0
18.04.2013, 18:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.04.2013, 18:22
Помогаю со студенческими работами здесь

Поиск, сортировка и удаление строки в txt файле
Помогите новичку с C++. Есть файл с данными вида: ФИО Дата рождения Образование и тд... ...

Поиск в файле латиницы и её удаление
Добрый день. Возникла необходимость обработать файл, содержащий даты рождения и фамилии таким...

Поиск и удаление в текстовом файле
В общем полное задание такое: Имеем несколько файлов, нужно написать программу, которая будет...

C#. Поиск и удаление записей в большом файле
Есть начальный файл, постоянно одной структуры. Нужно в нём найти строки, которые содержат в себе...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru