![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
как удалить промежуток от <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
|
||||
|
||||
|
блин я туплю сегодня.... спасибо всем! разобрался
![]() |