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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2012, 19:31   #1
Gudzik11
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 138
По умолчанию Удаление лишних строк в memo

Здравствуйте !
Вот нужно из htm документа получить некоторые значения пытался по разному но вычитал на этом сайте такой парсер ECXMLParser и там был пример .

Код:
procedure TForm1.Button2Click(Sender: TObject);

  procedure DrawXMLItem(XMLItem: TXMLItem);
  var
    I : Integer;
  begin
    Memo1.Lines.Add(XMLItem.Name+' : '+XMLItem.Text);
    for i := 0 to XMLItem.SubItemCount-1 do
      DrawXMLItem(XMLItem.SubItems[i]);
  end;

begin
  XML.LoadFromFile('E:\file.xml'); //любой xml файл, для тестирования можно и здесь указать
  Memo1.Lines.BeginUpdate;
  DrawXMLItem(XML.Root);
  Memo1.Lines.EndUpdate;
end;
Вот я всё сделал по примеру .Получил в memo текст такого содержания

Код HTML:
span : скрыть
div : 
div : 
div : 
div : 
div : 
p : 
a : Понедельник
p : 09
p : апреля
div : 
img : 
div : 
div : мин.
span : +10
div : макс.
span : +17
div : 
div : 
p : 
a : Вторник
p : 10
p : апреля
div : 
img : 
div : 
div : мин.
span : +5
div : макс.
span : +14
div : 
Так вот можно как то сделать так? чтб такие строки как
Код HTML:
div : 
img : 
div :
удалить тоест если после : нет записи то строка удалялась .
Gudzik11 вне форума Ответить с цитированием
Старый 09.04.2012, 19:39   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А чего за html документ? Что получить нужно? Может и никакой ECXMLParser не нужен.

Цитата:
если после : нет записи то строка удалялась .
Код:
for i := 0 to memo1.count-1 do
  if (memo1.lines[i] = 'div :') or (memo1.lines[i] = 'img :') then
    memo1.lines.delete(i);
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 09.04.2012, 19:49   #3
Gudzik11
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 138
По умолчанию

[QUOTE=Alex11223;1018009]А чего за html документ? Что получить нужно? Может и никакой ECXMLParser не нужен.

Документ прикрепил .
Может и правда есть красивей способ.
А насчёт кода то там не только div : и img : там их много разных .
И нужно так чтоб если после div : было какое то слово тогда строка не удалялась
Вложения
Тип файла: rar XML.RAR (11.5 Кб, 6 просмотров)

Последний раз редактировалось Gudzik11; 09.04.2012 в 19:53.
Gudzik11 вне форума Ответить с цитированием
Старый 09.04.2012, 20:20   #4
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Код:
for i := Memo1.Lines.Count - 1 downto 0  do
begin
  Line := TrimRight (Memo1.Lines[i]);
  P := Pos (':', Line);
  if ( P > 0 ) and ( Length (Line) = P ) then
    Memo1.Lines.Delete (i);
end; {for}
Arigato вне форума Ответить с цитированием
Старый 09.04.2012, 20:23   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Можно просто и не писать в мемо такие строки

Код:
if Trim(XMLItem.Text)<>'' then  Memo1.Lines.Add(XMLItem.Name+' : '+XMLItem.Text);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 09.04.2012, 20:44   #6
Gudzik11
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 138
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Можно просто и не писать в мемо такие строки

Код:
if Trim(XMLItem.Text)<>'' then  Memo1.Lines.Add(XMLItem.Name+' : '+XMLItem.Text);
А куда его вставить надо ?

можете какой небуть пример написать ?
Gudzik11 вне форума Ответить с цитированием
Старый 09.04.2012, 22:05   #7
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Вместо этого вставляй:
Код:
Memo1.Lines.Add(XMLItem.Name+' : '+XMLItem.Text);
Так действительно лучше будет, невнимательно прочел тему, сделал именно задачу удаления, но зачем удалять, если можно просто не добавлять.
Arigato вне форума Ответить с цитированием
Старый 10.04.2012, 06:57   #8
Gudzik11
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 138
По умолчанию

Спасибо ! и правда неплохо получается ))
а как теперь выводить эти значения?
Gudzik11 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление лишних символов из Memo NSV Общие вопросы Delphi 10 23.11.2012 08:38
Удаление строк в memo roxy7 Компоненты Delphi 2 16.03.2012 23:07
(Ассемблер)Ввод\вывод строк, удаление лишних пробелов... Марияzzz Помощь студентам 0 28.04.2010 20:01
Удаление строк из Memo Leksda Общие вопросы Delphi 6 20.03.2009 15:31