Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2012, 19:38   #1
hon
Форумчанин
 
Регистрация: 08.06.2011
Сообщений: 693
По умолчанию Удалить из файла все строки содержащие 3 и 5

Как удалить из файла все строки, содержащие цифры 3 и/или 5?

Примеры:
Исходный файл:
Цитата:
1
2
3
4
5
55
35
Новый файл:
Цитата:
1
2
4
hon вне форума Ответить с цитированием
Старый 15.03.2012, 22:34   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

На правах примера:
Код:
program Project1;

{$APPTYPE CONSOLE}

uses    classes,
  SysUtils;
var s:TStringList;i:integer;


begin
 s:=TStringList.Create;
 s.LoadFromFile('File.mio');

 for i:=s.Count-1 to 0 do
  if (pos('3',s[i])<>0)or(pos('5',s[i])<>0) then s.Delete(i);
 s.SaveToFile('File.mio');
  { TODO -oUser -cConsole Main : Insert code here }
end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.03.2012, 13:57   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну, я бы советовал строго придерживаться правила: "Что ручками создал, то ручками и удаляй!"

т.е. в конце, после сохранения файла либо
Код:
s.Free;
либо
Код:
FreeAndNil(s);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.03.2012, 19:52   #4
hon
Форумчанин
 
Регистрация: 08.06.2011
Сообщений: 693
По умолчанию

Stilet, файл не изменяется, а строка
Код:
  if (pos('3',s[i])<>0)or(pos('5',s[i])<>0) then s.Delete(i);
вообще не выпоняется
hon вне форума Ответить с цитированием
Старый 16.03.2012, 20:12   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А использовать полный путь при чтении файла и записи в него
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.03.2012, 20:35   #6
hon
Форумчанин
 
Регистрация: 08.06.2011
Сообщений: 693
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А использовать полный путь при чтении файла и записи в него
Так я и пишу полный типа
E:\test_test.txt
hon вне форума Ответить с цитированием
Старый 16.03.2012, 20:49   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

for i:=s.Count-1 downto 0 do
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.03.2012, 20:49   #8
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
Сообщение от hon Посмотреть сообщение
Stilet, файл не изменяется, а строка
Код:
  if (pos('3',s[i])<>0)or(pos('5',s[i])<>0) then s.Delete(i);
вообще не выпоняется
а вы цикл исправили??
Вот тут смотрите
Цитата:
Код:
for i:=s.Count-1 to 0 do
  if (pos('3',s[i])<>0)or(pos('5',s[i])<>0) then s.Delete(i);
 s.SaveToFile('File.mio');
Поэтому строчка и не выполняется
измените вот так
Код:
for i:=s.Count-1 downto 0 do
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 16.03.2012, 20:50   #9
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Браво Аватар +1 за скорость!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 21.03.2012, 21:55   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
for i:=s.Count-1 to 0 do
ОЙ!!! Дважды лоханулся... Приношу извинения
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
двумерный массив. вывести все строки, содержащие хотя бы один "0"(ноль) (написать через функцию в Delphi) BLADIMIR Помощь студентам 4 07.09.2011 21:24
Строки.Напечатать все слова, содержащие по одной цифре. Lanka1 Общие вопросы C/C++ 11 11.02.2011 16:36
Даны строки S и S0. Удалить из строки S все подстроки, совпадающие с S0 . Если совпадающих подстрок нет, Шпунюся Помощь студентам 1 16.12.2010 21:02
Из строки удалить все цифры. Shnurik_sh Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 24.11.2010 01:17
Как удалить все строки в Excel содержащие.. Dux Microsoft Office Excel 15 11.09.2009 04:41