Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.29;
Скачать: CL | DM;

Вниз

загрузка 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.026 c
3-1091604868
Alexander1966
2004-08-04 11:34
2004.08.29
Проблемма с TADOQuery


1-1092569716
my_name
2004-08-15 15:35
2004.08.29
текст строки, зная ее номер


1-1092302653
GrayFace
2004-08-12 13:24
2004.08.29
Сравнение двух procedure of object


4-1090164957
SashOK
2004-07-18 19:35
2004.08.29
ОТключить устройство


4-1090061970
Cara
2004-07-17 14:59
2004.08.29
Widestring to String