|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Удалить строки из memo
как удалить промежуток от <2> до <3>... <2> включительно... а <3> чтобы оставить...???
текст... Код:
какой то текст... какой то текст... <2> какой то текст... какой то текст... какой то текст... <3> какой то текст... |
#2
|
||||
|
||||
Ну например циклом...:
Код:
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
|
||||
|
||||
чесно не понял где ошибка... что такое s ?
|
#4
|
||||
|
||||
Видимо вы хотели такое:
Код:
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
|
||||
|
||||
Цитата:
нужно удалить всё между <2> и <3> и саму строку <2> |
#6
|
||||
|
||||
брат, ну это же просто)
Чего ты... 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
|
||||
|
||||
блин я туплю сегодня.... спасибо всем! разобрался
|