Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.10.2010, 18:30
Аватар для eXplorer
eXplorer eXplorer вне форума
Активный
 
Регистрация: 06.08.2010
Адрес: Ярославль
Сообщения: 264
Версия Delphi: 7
Репутация: 14
По умолчанию Удалить строки из memo

как удалить промежуток от <2> до <3>... <2> включительно... а <3> чтобы оставить...???
текст...
Код:
какой то текст...
какой то текст...
<2>
какой то текст...
какой то текст...
какой то текст...
<3>
какой то текст...
Ответить с цитированием
  #2  
Старый 07.10.2010, 18:56
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Ну например циклом...:
Код:
var
  i: integer;
begin
  if(pos('<2>', s)>0) then begin
    for i:=pos('<2>', s) to length(s) do begin
      if(s[i] <> '<3>') then      
        Delete(s, i, 1)
      else Break;
    end;
  end;

Как то так...

ЗЫ тут есть ошибка, т.к. это всего лишь пример, и писал его я без делфи...
если не поймешь, то попроси, напишу рабочий код.

ЗЫЫ надо искать в тексте "<2>", и если оно найдено, то удалять то тех пор, пока не встретиться "<3>", если "<3>" встретилось, то выход из цикла (в моем случае - break)
__________________
Помогаю за Спасибо

Последний раз редактировалось v1s2222, 07.10.2010 в 18:59.
Ответить с цитированием
  #3  
Старый 07.10.2010, 19:27
Аватар для eXplorer
eXplorer eXplorer вне форума
Активный
 
Регистрация: 06.08.2010
Адрес: Ярославль
Сообщения: 264
Версия Delphi: 7
Репутация: 14
По умолчанию

чесно не понял где ошибка... что такое s ?
Ответить с цитированием
  #4  
Старый 07.10.2010, 20:45
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Видимо вы хотели такое:
Код:
Var i,j: Integer;
begin
 for i := 0 to Memo1.Lines.Count - 1
 do if Pos('<3>', Memo1.Lines[i]) <> 0
    then for j := i - 1 downto 0
         do if Pos('<2>', Memo1.Lines[j]) <> 0
            then Memo1.Lines.Delete(j);
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 07.10.2010, 20:55
Аватар для eXplorer
eXplorer eXplorer вне форума
Активный
 
Регистрация: 06.08.2010
Адрес: Ярославль
Сообщения: 264
Версия Delphi: 7
Репутация: 14
По умолчанию

Цитата:
Сообщение от Страдалецъ
Видимо вы хотели такое:
Код:
Var i,j: Integer;
begin
 for i := 0 to Memo1.Lines.Count - 1
 do if Pos('<3>', Memo1.Lines[i]) <> 0
    then for j := i - 1 downto 0
         do if Pos('<2>', Memo1.Lines[j]) <> 0
            then Memo1.Lines.Delete(j);
удаляет только строку <2>...
нужно удалить всё между <2> и <3> и саму строку <2>
Ответить с цитированием
  #6  
Старый 07.10.2010, 21:08
Аватар для Uniq!
Uniq! Uniq! вне форума
Местный
 
Регистрация: 29.09.2010
Сообщения: 539
Версия Delphi: Delphi XE3
Репутация: 374
По умолчанию

брат, ну это же просто)
Чего ты... TStrings (это тип который как раз и есть Memo1) надо знать. Ибо он часто встречается...

Давай я наведу на мысли:
тебе надо бонально перебрать все поля, как это сделать ты уже выяснил:

Код:
for i := 0 to Memo1.Lines.Count - 1 do
 begin
 
 end;

Перебирая найти ту которая содержит в себе <2>.
Удалить.
Искать дальше строку <3> и пока не найдёшь (цикл с предусловием) удалять всё что попадётся на пути.

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
 i:integer;
begin
for i:=0 to Memo1.Lines.Count - 1 do //запускаем цикл перебора (вывалимся Exit ниже из него как только найдём <2>
 begin
   if memo1.Lines[i]='<2>' then  // нашли
    begin
     Memo1.Lines.Delete(i); // удаляем найденное
     while memo1.Lines[i]<>'<3>' do memo1.Lines.Delete(i);  // пока ищем <3>  удаляем строчки(тем самым в мемке последние строки будут подниматься) на место удалённой попадать будет новая...
     exit;
    end;
end;
end;

Последний раз редактировалось Uniq!, 07.10.2010 в 21:18.
Ответить с цитированием
  #7  
Старый 07.10.2010, 21:15
Аватар для eXplorer
eXplorer eXplorer вне форума
Активный
 
Регистрация: 06.08.2010
Адрес: Ярославль
Сообщения: 264
Версия Delphi: 7
Репутация: 14
По умолчанию

блин я туплю сегодня.... спасибо всем! разобрался
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:35.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter