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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2011, 22:34   #1
dubailand
Пользователь
 
Регистрация: 16.01.2011
Сообщений: 65
По умолчанию Удаление строки в memo

Добрый вечер!
Наконец то добрался до проекта. Идет обработка html кода в мемо и удаляются ненужные строки. Разработал такой алгоритм:
Код:
    for i:=0 to n do
    begin
         if memo1.Lines[i]='<head>' then for p:=i downto 0 do memo1.Lines.Delete(p);
    end;
Все работает практически как надо. Входные данные:
PHP код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- 
toodoo-keyKnA0gugtsB7jtGFcU3HuU -->
<
html>
<
head>
<
link href="style.css" rel="stylesheet" type="text/css">
<
script type="text/javascript" src="http://site.ru/popup-domination/js.php"></script>
</head> 
Выходные получаются:
PHP код:
head////Удаляет первый символ
<link href="style.css" rel="stylesheet" type="text/css">
<
script type="text/javascript" src="http://site.ru/popup-domination/js.php"></script>
</head> 
Почему удаляется этот первый символ??? Нигде ничего подобного не прописано, а строка именно новая. Открывающий символ должен же остаться. В чем дело???
dubailand вне форума Ответить с цитированием
Старый 21.12.2011, 08:41   #2
Gagarik
Пользователь
 
Регистрация: 14.11.2011
Сообщений: 13
По умолчанию

Попробовал твой пример. удалился не только первый символ, но и вся строка c <head>
А почему бы ей не удалиться. ты находишь строку с <head>, она равна i.
Затем p:=i и Delete(p).
Я бы сделал так (без цикла по строкам)
Код:
str := memo1.Text;
 Delete(str, 1, pos('<head>', memo1.Text)-1);
 memo1.Text := str;
Gagarik вне форума Ответить с цитированием
Старый 21.12.2011, 11:07   #3
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

dubailand, как я понял, нужно получить содержимое тега <head> ?.
На мой взгляд, не очень хороший алгоритм, надо придумать что-то универсальное.
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Старый 21.12.2011, 11:56   #4
grafgrial
Просто хороший
Форумчанин
 
Аватар для grafgrial
 
Регистрация: 26.03.2010
Сообщений: 562
По умолчанию

не легче сделать так
Код:
delete (Memo1.text,1,pos('<head>',Memo1.text))
Если необходимо удалить до тега <head>
Помог, нажми весы слева

Последний раз редактировалось grafgrial; 21.12.2011 в 15:56.
grafgrial вне форума Ответить с цитированием
Старый 21.12.2011, 12:12   #5
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Цитата:
Сообщение от grafgrial Посмотреть сообщение
не легче сделать так
Код:
delete (Memo1.text,1,pos('<head>,Memo1.text'))
Если необходимо удалить до тега <head>
Нельзя передавать в качестве var параметра подпрограммы свойство.
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Старый 21.12.2011, 15:56   #6
grafgrial
Просто хороший
Форумчанин
 
Аватар для grafgrial
 
Регистрация: 26.03.2010
Сообщений: 562
По умолчанию

Цитата:
Сообщение от chertovich Посмотреть сообщение
Нельзя передавать в качестве var параметра подпрограммы свойство.
Не совсем понял о чем вы?
Помог, нажми весы слева
grafgrial вне форума Ответить с цитированием
Старый 21.12.2011, 16:04   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от grafgrial Посмотреть сообщение
Не совсем понял о чем вы?
Цитата:
Код:
 delete (Memo1.text,1,pos('<head>',Memo1.text))
[Error] Unit1.pas(30): Constant object cannot be passed as var parameter
нельзя передавать объект/свойство в качестве переменной.
Memo1.Text - это на самом деле не строка, а свойство..

можно так:
Код:
var s : string;
    k : integer;
begin
.....
 s := Memo1.Text;
 k := pos('<head>',s);
 if k>1 then begin
    delete (s,1,k-1);
    Memo1.Text := s;
 end;
.....
p.s. я написал код, который заменяет то, что Вы привели, не больше и не меньше. В суть решаемой проблемы я не вдавался, извините...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление лишних символов из Memo NSV Общие вопросы Delphi 10 23.11.2012 08:38
Удаление части строк в memo igabenu Помощь студентам 3 17.10.2012 17:47
Удаление строк в Memo Marsel737 Общие вопросы Delphi 8 03.01.2010 10:42
Удаление строк из Memo Leksda Общие вопросы Delphi 6 20.03.2009 15:31
Удаление конкретной строки Memo JakSon Общие вопросы Delphi 6 03.03.2008 09:35