Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2011.03.20;
Скачать: [xml.tar.bz2];

Вниз

Удалить строки из RichEdit   Найти похожие ветки 

 
ягость   (2009-08-07 19:10) [0]

Дано: RichEdit с загруженным html кодом. Подскажите пожалуйста, как из RichEdit"a удалить все теги кроме заданных?
Я думал искать позицию символа "<", позицию символа ">", сравнивать текст между ними с каждым элементом массива разрешенных тегов и если совпадений не найдено, удалять.
Что-то мне подсказывает, что это неоптимальный алгоритм, к тому же он не будет работать, если в тексте встретится одиночный знак "<"...
Подскажите как надо делать. Буду дико благодарен, если проиллюстрируете кодом.


 
Дмитрий Белькевич   (2009-08-07 20:22) [1]

Искать парсер html, парсить перед загрузкой, удалять лишние тэги, грузить дальше куда нужно.


 
sniknik ©   (2009-08-07 20:44) [2]

> Искать парсер html
чего его искать, он есть на каждой машине...  у кого винда гарантированно есть IE, в линуксе есть Gecko, которой и в винде в принципе можно использовать, но чтобы не усложнять - берем IE (TWebBrowser) грузим html код из RichEdit-а в него, и имеем замечательно распарсенный документ,  в объектах (DOM)... откуда можно просто взять, что нужно...


 
ягость   (2009-08-07 20:58) [3]

К сожалению недостаток всех подобных парсеров

> не будет работать, если в тексте встретится одиночный знак "<"...

по этому и прошу помощи


 
ягость   (2009-08-07 21:00) [4]

sniknik, а можно хотя бы алгоритм решения конкретно моей проблемы?


 
Дмитрий Белькевич   (2009-08-07 21:12) [5]


> К сожалению недостаток всех подобных парсеров> не будет
> работать, если в тексте встретится одиночный знак "<"...
>


В нормальном html тексте внутри текста знака "<" быть не должно.


> у кого винда гарантированно есть IE,


Как минимум - могут снести, и могут быть поставки винды без эксполорера (кое-где в Европе так продают, если не ошибаюсь). Я привык как-то на винду не надеятся, но это дело каждого, конечно.


 
sniknik ©   (2009-08-07 21:27) [6]

> sniknik, а можно хотя бы алгоритм решения конкретно моей проблемы?
а я не вижу проблемы в твоей задаче, впрочем и задачи тоже не вижу, вижу что чтото делается средствами и близко не относящимися к html-ю, и заключаю что делается это через задний проход...

вот тут есть над чем подумать...
http://delphimaster.net/view/2-1249111382/
и оформить желаемое более внятно. для справки, никому не интересно "как" ты делаешь (это было бы интересно если бы разбирался глюк), интересно "что" ты делаешь, и зачем.

> Как минимум - могут снести
не могут. сам IE (браузер), может быть, но объектную модель... врядли.

> и могут быть поставки винды без эксполорера
а рабочий стол, в них есть? или проводник? а это как раз то, что это использует.

> Я привык как-то на винду не надеятся, но это дело каждого, конечно.
и запускаешь программы в вакууме? они у тебя наверно сферические...
но дело твое, можешь не надеяться, можешь поставить Gecko, из приведенной альтернативы... которую ты проигнорировал.

p.s. какие все предусмотрительные, закладываются даже на случай с вероятностью выигрыша в лотерею... и че же тогда там много глючных программ? может как раз от этого - "перемудрежа" на ровном месте?


 
ягость   (2009-08-07 22:12) [7]

>а я не вижу проблемы в твоей задаче, впрочем и задачи тоже не вижу, вижу что чтото делается средствами и близко не относящимися к html-ю, и заключаю что делается это через задний проход...
Видимо я плохо объясняю: Имеется некий массив
procedure TForm1.FormCreate(Sender: TObject);
var allowedtags: array of string;
 i:integer;
begin
allowedtags[0] := "<br>";
allowedtags[1] := "<hr>";
for i:=0 to length(allowedtags) do
// тут надо что-то делать с RichEdit1.Text
end;
end;

в цикле надо как-то вытащить теги и проверить их на присутсвие в массиве. Если тега в массиве нет, то удалить. Я с DOM практически незнаком, можно как-то без него обойтись?


 
Дмитрий Белькевич   (2009-08-07 22:44) [8]


> не могут. сам IE (браузер), может быть, но объектную модель.
> .. врядли.


>и запускаешь программы в вакууме? они у тебя наверно сферические.

Уже избавился от: ie, wininet, richedit, записи несжатого avi через api. Это то, что пришлось переписывать из-за всевозможных проблем у юзеров. Хотелось бы, как минимум, еще от апи работы с компрессией avi отказаться, обращаясь непосредственно к кодекам, но оно мне не настолько нужно.

Веб интерфейс генерируем полностью сами (около 20 динамических страниц по шаблонам + ajax). Без использования апача/мускла/пхп.

Все программы благополучно переживают переустановку операционки, перенос в любую папку (достаточно fb и драйвер хардлока переставить).

Имеем в результате. Программы без проблем переносятся на новые платформы. На висту почти переписывать ничего не пришлось - просто поправил путь для изменяемых файлов. На сервере софты 2008-м сразу завелись. На 7-ке (уже после переделки путей под висту) - тоже.

На wine один из наших серверных софтов завёлся почти без переделки. Станция не завелась из-за direct"а (ну это ожидаемо), подумываю 2d движок вывода под opengl перетащить.

Обращений от юзеров в поддержку - минимум, почти все - по поводу проблем нашего кода.

Размер программ вместе с библиотеками:

Сервер - 450 тыс. строк. Станция - 750 тыс. строк. Видеограббер - 590 тыс. строк. Архив - 590 тыс. строк.


> p.s. какие все предусмотрительные,


К сожалению - не все.


> закладываются даже на случай с вероятностью выигрыша в лотерею


Переписывалось всё не от того, что заняться нечем, а от того, что были реальные проблемы у пользователей.


> и че же тогда там много глючных программ? может как раз
> от этого - "перемудрежа" на ровном месте?


Скорее от недомудрежа.


 
Дмитрий Белькевич   (2009-08-07 22:48) [9]


> в цикле надо как-то вытащить теги и проверить их на присутсвие
> в массиве. Если тега в массиве нет, то удалить. Я с DOM
> практически незнаком, можно как-то без него обойтись?


Повторюсь. Либо, как я предлагаю, поискать готовый парсер html, загрузить данные в него, удалить лишнее, загрузить назад, либо через DOM.

Знаков "<" и ">" в корректном html"е быть не должно там есть для этого &lt и &gt.


 
Дмитрий Белькевич   (2009-08-07 22:52) [10]


> Знаков "<" и ">" в корректном html"е быть не должно там
> есть для этого < и >.


Жесть :)

Там должно было быть: $_lt и $_gt (без подчеркиваний).


 
ягость   (2009-08-07 22:55) [11]

Проблема в том, что первые три парсера которые я нашел все используют DOM((


 
Дмитрий Белькевич   (2009-08-07 23:02) [12]

Здесь:

http://www.torry.net/pages.php?id=216

надеюсь уже смотрел?


 
Дмитрий Белькевич   (2009-08-07 23:12) [13]

Вообще - проблема с ie не только из-за его возможного сноса. А еще и из-за того, что у юзеров могут быть разные версии и патчи ie. И у каждой версии - свои особенности (читай - глюки) и, проще чем под их всех подстраваться и заниматься постоянным тестированием, вообще отказаться от его использования.


 
sniknik ©   (2009-08-07 23:15) [14]

> Видимо я плохо объясняю:
нет, ты хорошо объясняешь, но ты НЕ ТО объясняешь, ты объясняешь "как" ты делаешь, но говоришь, что это "что"... а надо реальное "что", задачу, а не действия.

т.к. без этого непонятно, например  
> Имеется некий массив
откуда он имеется? почему именно массив, а не список например (хотя, форма представления без разницы)
> в цикле надо как-то вытащить теги и проверить их на присутсвие в массиве. Если тега в массиве нет, то удалить.
зачем вытащить? и зачем/где удалять? смысл действий, чего бы эти тегам не полежать на том месте куда их изначально не поклали... что изменится если гдето тегов не досчитаются?

не понятно? давай аналогию...
вот идешь ты куда то и видишь забавную картинку, группа мужиков идет из одного места в другое, там ставит ведра, чуть погодя берет другие и идет назад, куда уже другая группа вернула их ведра, ну и так далее, перемещаются туда сюда, и все без толку, ведер ни там не там больше не стало.
и вот они тебя окликают и просят помочь, ты спрашиваешь чем, и естественно, а что это они делают... (очень интересно)
они, значит - помочь оптимизировать процесс, чем нибудь. чтобы нам легче ходилось, больше носилось. в форме четких указаний, что на что поменять, чтобы было лучше.
ты - да, но что вы делаете?
они - ну как, берем ведра, несем туда, другие берут ведра и несут сюда...
ты начинаешь подозревать, что они занимаются фигней, или говорят не то, т.к. вроде все в рабочей форме и задачу им бригадир вроде ставил.
начинаешь сначала - нет, это то "как" вы делаете, а "что" не понятно, ведь не может быть смыслом действия ничего не меняющие.
они - ну мы плохо наверное объяснили, мы(МЫ) берем ведра здесь, и несем туда, другие незут там и несут сюда, потом меняемся...
ты - (!!!????!!!) да, но ЧТО вы делаете?
и т.д.
а потом приходит бригадир и говорит реальную задачу, - они утрамбовывают насыпной грунт, веса человека мало поэтому грузятся ведрами с песком.
вот! задача. и когда понятна задача, то сразу есть другое решение (оптимизация процесса) - "блин, а че же вы не катком то? вон же каток асфальтоукладчиковский стоит!"
эээ, а мы думали что он только для асфальта.

ну понял разницу? "ЧТО" и "КАК"... , не понял - твои проблемы.

> Я с DOM практически незнаком
тоже твои проблемы. кстати может пора начинать знакомится?

> можно как-то без него обойтись?
конечно можно! русская земля богата "четырехугольноколесными" велосипедами... почему бы не изобрести еще один?

p.s. ждем бригадира.


 
TUser ©   (2009-08-07 23:15) [15]

[0]

нужен конечный автомат


 
sniknik ©   (2009-08-07 23:17) [16]

> разные версии и патчи ie. И у каждой версии - свои особенности (читай - глюки)
глюки IE не в парсинге, они в отображении распарсенного. а тут это без надобности. хоть 6-ой возьми, подойдет.


 
sniknik ©   (2009-08-07 23:19) [17]

> Веб интерфейс генерируем полностью сами (около 20 динамических страниц по шаблонам + ajax). Без использования апача/мускла/пхп.
ага, и без яваскрипта, и без операционки,  все сами, все сами, такие рукодельники. %)


 
Дмитрий Белькевич   (2009-08-07 23:22) [18]


> нужен конечный автомат



> конечно можно! русская земля богата "четырехугольноколесными"
> велосипедами


:)

Ну хоцца человеку тэги пофильтровать - пусть ему ;)


 
Дмитрий Белькевич   (2009-08-07 23:27) [19]


> ага, и без яваскрипта, и без операционки,  все сами, все
> сами, такие рукодельники. %)


С яваскриптом, само собой. Данные яваскрпту через это:

http://sourceforge.net/projects/lkjson/

отдаём.

Вообще, в идеале, хотелось бы без операционки ;) Но увы...


 
Дмитрий Белькевич   (2009-08-07 23:29) [20]


> глюки IE не в парсинге


Ну вот, бригадир (с) сделает - расскажет...


 
Anatoly Podgoretsky ©   (2009-08-08 07:26) [21]


> нужен конечный автомат

Конечно нужен и именно конечный, что бы раз и навсегда покончить.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2011.03.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.005 c
15-1289326102
DiamondShark
2010-11-09 21:08
2011.03.20
Высокий/низкий уровень, ручное/автоматическое управление


3-1255589577
stas
2009-10-15 10:52
2011.03.20
Сервис и ADO


3-1254149519
Diplomat
2009-09-28 18:51
2011.03.20
Использование доменов в IB FB


15-1290765713
pasha_golub
2010-11-26 13:01
2011.03.20
Космический симулятор


2-1293004890
student22
2010-12-22 11:01
2011.03.20
ActiveX &amp; IntraWeb





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский