18.10.2009, 17:37 | #1 (permalink) |
Member
Регистрация: 12.02.2007
Сообщений: 165
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 69
|
Удаление строк в Memo
for i :=0 to memo1.Lines.Count do if pos('ЗОНЕ',memo1.Lines[i]) > 0 then begin memo1.lines.Delete(i+1); memo1.lines.Delete(i+2); memo1.lines.Delete(i+3); memo1.lines.Delete(i+4); end; |
18.10.2009, 17:37 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Скорее всего информация которая содержится по данным ссылкам будет вам полезна Автоматическа нумерация строк Обработка строк,массивов,записей |
20.10.2009, 18:03 | #2 (permalink) |
support
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
|
Потому что вы сначала вырезаете следующую строку, затем относительно вырезанного - через одну, затем относительно последней вырезанной - через две, потом - через три. По-другому, вследствие выполнения директивы Delete счетчик строк реинициализируется (перезаписывается), и принимает текущее значение, от которого и надо отталкиваться при следующем вызове данной директивы.
Правильнее будет так (обработчик нажатия кнопки) Код:
procedure TForm1.Button1Click(Sender: TObject); var i: integer; begin for i :=0 to memo1.Lines.Count do if pos('ЗОНЕ',memo1.Lines[i]) > 0 then begin memo1.lines.Delete(i+1); memo1.lines.Delete(i+1); memo1.lines.Delete(i+1); memo1.lines.Delete(i+1); end; end;
__________________
Убить всех человеков! |
07.12.2009, 09:11 | #4 (permalink) |
Member
Регистрация: 12.02.2007
Сообщений: 165
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 69
|
Всем привет. Появилась еще одна проблема: необходимо удалить в файле все строки только содержащие сисмволы : и пробела
следующий код почемуто пропускает все: var s: string; i,k: integer; result: boolean; t1: textfile; begin assignfile(t1,'c:\t1.txt'); reset(t1); while not EOF(t1) do begin readln(t1,s); begin //начинаем обработку построчно k:=1; result:= false; repeat //начинаем поиск в текущей строке нужных символов if (s[k]<>':') or (s[k]<>' ') then result := true // если в строке содержатсься другие else k:=k+1; //симоволы то поиск удачный until (result=true) or (k>Length(s)); if result=false Then delete(s,1,length(s)) //если строка содержит только ':' и ' ' тогда else memo1.Lines.add(s) //удалем, если нет то добаляем в Мемо end; |
07.12.2009, 09:37 | #5 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
07.12.2009, 17:36 | #6 (permalink) |
Member
Регистрация: 12.02.2007
Сообщений: 165
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 69
|
Да и в самом деле, что-то я затупил)) спасибо.
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|