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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.01.2014, 20:57   #1
mr_xxx
Пользователь
 
Регистрация: 22.03.2012
Сообщений: 99
По умолчанию найти и удалить всю cтроку, в которой нет заданной подстроки...

привет уважаемые программисты
спасибо что всегда помогаете

у меня вот какой вопрос

допустим у меня есть текст :

1 ) Hello my name is Sasha
2) Hello my name is Sasha aaa111
3) Hello BBB111 my name is Sasha
4) i live in the world
5) i live in ccc333 the world

мне нужна найти и удалить строки где нет aaa111 или BBB111 или ccc333
в моем примере после выполнения команды должен остаться вот так
2) Hello my name is Sasha aaa111
3) Hello BBB111 my name is Sasha
5) i live in ccc333 the world

если есть в строке aaa111 или BBB111 или ccc333 то оставляем эту строку а если нет удаляем
очень прошу поподробней
ЗАРАНЕЕ ОГРОМНОЕ СПАСИБО
mr_xxx вне форума Ответить с цитированием
Старый 05.01.2014, 21:22   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,504
По умолчанию

Есть функция Pos.
Код:
var stroka:string;
begin
 if Pos('aaa111',stroka)>0 then  //  если stroka содержит "aaa111" ..
type_Oleg на форуме Ответить с цитированием
Старый 05.01.2014, 22:04   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
допустим у меня есть текст :
Где есть? Как он в программу попадает?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.01.2014, 10:55   #4
mr_xxx
Пользователь
 
Регистрация: 22.03.2012
Сообщений: 99
По умолчанию

Цитата:
Сообщение от type_Oleg Посмотреть сообщение
Есть функция Pos.
Код:
var stroka:string;
begin
 if Pos('aaa111',stroka)>0 then  //  если stroka содержит "aaa111" ..
спасибо а как же потом удалить именно эту строку ? и ещо у меня не только ааа111 ест ещо BBB111 ссс333 если из этих троих ест хоть один нужна удалить эту строку
пожалуйста поподробней
mr_xxx вне форума Ответить с цитированием
Старый 06.01.2014, 11:05   #5
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

Текст где храниться? Закиньте его в TStringList, получиться так
Код:
var 
  stroka:string;
  i: integer;
begin
  for i:=0 to List.Count-1 do
  begin
  stroka := list.strings[i];
  if (Pos('aaa111',stroka)=0) or (Pos('BBB111 ',stroka)=0) or (Pos('ссс333 ',stroka)=0) then 
  list.delete(i);  // удаляем строку
  end;
end;
ZuBy вне форума Ответить с цитированием
Старый 06.01.2014, 14:00   #6
mr_xxx
Пользователь
 
Регистрация: 22.03.2012
Сообщений: 99
Вопрос

Цитата:
Сообщение от ZuBy Посмотреть сообщение
Текст где храниться? Закиньте его в TStringList, получиться так
Код:
var 
  stroka:string;
  i: integer;
begin
  for i:=0 to List.Count-1 do
  begin
  stroka := list.strings[i];
  if (Pos('aaa111',stroka)=0) or (Pos('BBB111 ',stroka)=0) or (Pos('ссс333 ',stroka)=0) then 
  list.delete(i);  // удаляем строку
  end;
end;


Код:
procedure TForm1.Button3Click(Sender: TObject);
var F:TStringList;
 stroka:string;
  i: integer;

begin
   F:=TStringList.Create;
 F.LoadFromFile('C:\Users\Probook\Desktop\111.txt');

   for i:=0 to strtoint (edit2.text)do
  begin
  stroka := F.strings[i];
  if not (Pos('A.  ',stroka)=1) or (Pos('B.  ',stroka)=1) or (Pos('C.  ',stroka)=1)or (Pos('D.  ',stroka)=1)or (Pos('E.  ',stroka)=1) or (Pos('F.  ',stroka)=1)or (Pos('G.  ',stroka)=1) or (Pos('?',stroka)=1)then
  F.delete(i);
  end;






 F.SaveToFile('C:\Users\Probook\Desktop\111-2.txt');
 F.Free;
end;

Последний раз редактировалось mr_xxx; 06.01.2014 в 14:41.
mr_xxx вне форума Ответить с цитированием
Старый 06.01.2014, 14:08   #7
mr_xxx
Пользователь
 
Регистрация: 22.03.2012
Сообщений: 99
По умолчанию

вот допустим текст
Код:
Что является предметом курса <<Теории автоматического управления>>?

	
	


A.  Дисциплина, изучающая процессы автоматического управления объектами разной физической природы
Дисциплина, изучающая процессы автоматического управления объектами разной физической природы 

B.  Дисциплина, изучающая процессы автоматизированной системы управления
Дисциплина, изучающая процессы автоматизированной системы управления 

C.  Дисциплина, изучающая процессы автоматизизации различных объектов
Дисциплина, изучающая процессы автоматизизации различных объектов 

D.  Дисциплина, изучающая процессы автоматизированных систем управления аппаратами
Дисциплина, изучающая процессы автоматизированных систем управления аппаратами 

E.  Дисциплина, изучающая процессы автоматизированных систем управления объектами
Дисциплина, изучающая процессы автоматизированных систем управления объектами 
 

ANSWER: A  
 	
	 	
	 
 Что является объектом изучения курса <<Теории автоматического управления>>?  
Что является объектом изучения курса <<Теории автоматического управления>>?   
 	
	 	
	 
 

A.  Автоматизированные системы регулирования. 
Автоматизированные системы регулирования.  

B.  Автоматическая система управления.
Автоматическая система управления. 

C.  Автоматическая система управления.
Автоматическая система управления. 

D.  Частично автоматизированная система управления. 
Частично автоматизированная система управления.  

E.  Практическое построение систем автоматического управления
Практическое построение систем автоматического управления 
 

ANSWER: B  
 	
	 	
	 
 Что является основным техническим средством при управлении технологическими процессами?
Что является основным техническим средством при управлении технологическими процессами? 
 	
	 	
	 
 

A.  Набор контрольно - измерительных приборов. 
Набор контрольно - измерительных приборов.  

B.  Набор измерительных преобразователей различного назначения. 
Набор измерительных преобразователей различного назначения.  

C.  ЭВМ.
ЭВМ. 

D.  Набор чувствительных элементов (датчиков).
Набор чувствительных элементов (датчиков). 

E.  Регулятор.
Регулятор. 
 

ANSWER: C
нужна этой программой очистить не нужное
но после пропуска этого текста через прогу становится вот таким

Код:
	

A.  Дисциплина, изучающая процессы автоматического управления объектами разной физической природы

Дисциплина, изучающая процессы автоматизированной системы управления 
C.  Дисциплина, изучающая процессы автоматизизации различных объектов

Дисциплина, изучающая процессы автоматизированных систем управления аппаратами 
E.  Дисциплина, изучающая процессы автоматизированных систем управления объектами
 
ANSWER: A  
	 	
 Что является объектом изучения курса <<Теории автоматического управления>>?  
 	
	 

A.  Автоматизированные системы регулирования. 

Автоматическая система управления. 
C.  Автоматическая система управления.

Частично автоматизированная система управления.  
E.  Практическое построение систем автоматического управления
 
ANSWER: B  
	 	
 Что является основным техническим средством при управлении технологическими процессами?
 	
	 

A.  Набор контрольно - измерительных приборов. 

Набор измерительных преобразователей различного назначения.  
C.  ЭВМ.

Набор чувствительных элементов (датчиков). 
E.  Регулятор.
 
ANSWER: C

Последний раз редактировалось mr_xxx; 06.01.2014 в 14:40.
mr_xxx вне форума Ответить с цитированием
Старый 06.01.2014, 18:11   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

во-первых, любые циклы, в которых изменяется количество записей, нужно крутить или в циклах repeay \ while, либо в обратном цикле for :
Код:
for i:=f.Count-1 downto 0 do
  begin
...
во-вторых, боюсь Вас разочаровать, но Вы вряд ли таким кодом получите то, что хотите. Ведь у Вас куча строк, в которых вообщее нет латинской буквы в начале. Они все остаются или все удаляются?!
Тут обработка чуть посложнее требуется, чем простое удаление строк, в которых нет заданной подстроки...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.01.2014, 18:29   #9
mr_xxx
Пользователь
 
Регистрация: 22.03.2012
Сообщений: 99
По умолчанию

всем спасибо
жаль что проблема остается открытой
mr_xxx вне форума Ответить с цитированием
Старый 06.01.2014, 19:35   #10
DpolenST
Форумчанин
 
Регистрация: 28.09.2013
Сообщений: 115
По умолчанию

попробуйте так
Код:
..............
   F:=TStringList.Create;
   F.LoadFromFile('C:\Users\Probook\Desktop\111.txt');

  for i:=F.Count-1 downto 1 do
  begin
   stroka := Trim(F.strings[i]);
   if(Length(stroka) AND Pos(stroka,F.strings[i-1])) then F.delete(i);
  end;
...............
Что бы еще такого сделать, чтобы ничего не делать?

Последний раз редактировалось DpolenST; 06.01.2014 в 20:08.
DpolenST вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[C++]Добавление к каждой заданной подстроке другой заданной подстроки Бинари Помощь студентам 0 25.10.2011 07:22
Даны строки S и S0. Удалить из строки S все подстроки, совпадающие с S0 . Если совпадающих подстрок нет, Шпунюся Помощь студентам 1 16.12.2010 21:02
VBA_макрос: удалить всю строку в таблице, если в ней есть слово "удалить" макарошка Microsoft Office Excel 15 05.10.2010 09:09
как определить в StringGrid строку, в которой нет одинаковых элеметов Blue Sky Помощь студентам 2 17.06.2010 16:30
Удалить из строки S1 первую, последнюю, все подстроки совпадающие с S2 ТРОЯН=) Паскаль, Turbo Pascal, PascalABC.NET 1 10.12.2008 23:28