Форум: "Основная";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];
Вниззагрузка HTML в МЕМО Найти похожие ветки
← →
Sash © (2004-08-17 08:44) [0]Здравствуйте! На форме лежит 2 мемо. В 1-ый загружаю вордовский документ сохраненный как веб страница с фильтром и вижу хтмл код:
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1251">
<meta name=Generator content="Microsoft Word 10 (filtered)">
<title>Jefuerfcvfdnvb urtbgvkrtg</title>
<style>
<!--
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman";}
@page Section1
{size:595.3pt 841.9pt;
margin:2.0cm 42.5pt 2.0cm 3.0cm;}
div.Section1
{page:Section1;}
-->
</style>
</head>
<body lang=RU>
<div class=Section1>
<p class=MsoNormal><span lang=EN-US>Jefuerfcvfdnvb urtbgvkrtg</span></p>
<p class=MsoNormal><span lang=EN-US>Rtkgh vhjrtbv uihgurtg</span></p>
<p class=MsoNormal><span lang=EN-US>R tjg uithjrtg</span></p>
<p class=MsoNormal><span lang=EN-US>Rtgi wrgug54</span></p>
<p class=MsoNormal><span lang=EN-US>Grtg nrtughrthguirt897t8jtrhew54f</span></p>
<p class=MsoNormal><span lang=EN-US> </span></p>
</div>
</body>
</html>
Во втором мемо мне нужно получить следующее:
<p>Jefuerfcvfdnvburtbgvkrtg</p>
<p>Rtkghvhjrtbvuihgurtg</p>
<p>R tjg uithjrtg</p>
<p>Rtgiwrgug54</p>
<p>Grtgnrtughrthguirt897t8jtrhew54f</p>
т.е. удалить все теги кроме тега <p> и </p>.
Подскажите пожалуйста, как это сделать?
← →
Fredy314 © (2004-08-17 08:57) [1]Сканируй все строки на поиск начала тега "<" потом смотри следующие буквы если "Р>" или "P " значит ето твой тег иначе пропусти его, внутри тега тоже нужно смотреть чтоб пропустить всё лишнее.
возможно pos("<",Memo1.Lines[i]) тебе пригодится.
← →
Sash © (2004-08-17 09:03) [2]2 Fredy314 © (17.08.04 08:57) [1]
Писал вот так, не идет
Flag:=False;
teg:="p>";
for i:=0 to Memo1.Lines.Count-1 do
begin
if Flag=True then Memo2.Lines.Add( Memo1.Lines[i]);
if pos(teg, Memo1.Lines[i])<>0 then
begin
if Flag=False then Flag:=True else
if Flag=True then Flag:=False;
if Flag=True then Memo1.Lines.Add(Memo1.Lines[i]);
end;
end;
еще писал teg:=<p, тоже не то. Если большие документы, то много строк вообще пропадают...
← →
Sash © (2004-08-17 09:06) [3]т.е.
if Flag=True then Memo2.Lines.Add(Memo1.Lines[i]);
опечатался...:)
← →
KSergey © (2004-08-17 09:21) [4]Вообще, ну напрягитесь маненько..
Возьмите ваш же коди повыполняйте его за компьютер - сразу станет понятно что не так и как надо модифицировать.
Так что говторого писать не буду, а просто некоторые замечания (ничего не улучшающие в плане достижения цели):
меняемif Flag=False then Flag:=True else
if Flag=True then Flag:=False;
наFlag := NOT Flag;
меняем вездеif Flag=True then
наif Flag then
Выделенное жирным напрасно сдвинуто, оно не является вложенным блоком.Flag:=False;
teg:="p>";
for i:=0 to Memo1.Lines.Count-1 do
begin
if Flag=True then Memo2.Lines.Add( Memo1.Lines[i]);
if pos(teg, Memo1.Lines[i])<>0 then
begin
if Flag=False then Flag:=True else
if Flag=True then Flag:=False;
if Flag=True then Memo1.Lines.Add(Memo1.Lines[i]);
end;
end;
← →
Kerk © (2004-08-17 09:22) [5]Так... набросал.. чего-то такое...
Flag := True; p := False;
s := Memo2.Lines.Text; s2 := "";
SetLength(s,Length(s)+1);
for I := 1 to Length(s) do
begin
if s[i] = "<" then
if s[i+1] = p then
begin
p := True;
end else Flag := False;
if s[i] = ">" and (not p) then Flag := True else
if Flag then s2 := s2 + s[i];
if s[i] = ">" then p := False;
end;
SetLength(s2,Length(s2)-1);
← →
Sash © (2004-08-17 09:56) [6]2Kerk © (17.08.04 09:22) [5]
2KSergey © (17.08.04 09:21) [4]
Сейчас попробую, спасибо за внимание!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.036 c