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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.07.2015, 21:53   #1
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию Цикл грузит процессор и жрет память.

И снова привет!
Передо мной стоит задача загрузить в WebBrowser все комментарии ВКонтакте. Они подгружаются динамически, путем клика на ссылку "к предыдущим записям", если таковая имеется. Если таковой нет, следовательно, либо контент еще не подгрузился, либо уже загрузился целиком и больше подгружать нечего. Я вижу решение таким:

Код:
          repeat
            Application.ProcessMessages;
            if Pos('onclick="WComments.showMore(); return false;" id=wcomments_more_link style="DISPLAY: none"', Memo1.Text)=0 then
              begin
                ProgressBar1.Position:=ProgressBar1.Position+1;
                all:=WebBrowser1.OleObject.Document.All;
                for i:=0 to All.Length-1 do
                  begin
                    item:=all.Item(i);
                    s:=item.InnerText;
                    if pos('к предыдущим записям',s)<>0 then  item.Click();
                  end;
                HTMLDocument := form1.WebBrowser1.Document as IHTMLDocument2;
                Form1.Memo1.Text:=HTMLDocument.body.innerHTML;
              end;
            sleep(50);
          until
            Pos('onclick="WComments.showMore(); return false;" id=wcomments_more_link style="DISPLAY: none"', Memo1.Text)<>0;
Поиск в исходном коде страницы связан с тем, что надпись "к предыдущим записям" присутствует всегда, другой вопрос, что когда уже подгружать нечего, она сделана в неотображаемом диве. Код работает, но при этом память постоянно растет с каждым проходом. Грубо говоря, там, где надо "кликнуть" всего 6-7 раз диспетчер к концу показывает до 100 МБ используемой приложением памяти. Процессор также загружен до 50%.
Знающие люди, подскажите, пожалуйста, в чем моя ошибка или, если есть, предложите другой вариант. Спасибо!
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 29.07.2015, 07:55   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 18,136
По умолчанию

Код:
Application.ProcessMessages;
Для начала это можно и в for запихать, чтобы проверить что нагружает проц. Попробуй лог забабахать и отслеживать не растет ли длина у переменной all.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 29.07.2015, 08:36   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Попробуй лог забабахать и отслеживать не растет ли длина у переменной all.
А я кстати об этом не подумал... Действительно может быть и такое.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.07.2015, 10:44   #4
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

Не растет длина у переменной. В общем, плюнул на все и перешел на API ВКонтакте)
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
WEB-приложение жрет память alexey_kip Java для Web (EE, Servlet, JSP, Tomcat, Spring MVC) 4 29.05.2015 16:55
while грузит процессор overhandos Общие вопросы C/C++ 9 09.05.2012 20:31
Грузит процессор на 50% Vikup Microsoft Office Excel 2 26.04.2012 08:50
Timer и advstring1DrawCell грузит процессор designer999 Общие вопросы Delphi 10 04.09.2011 13:48
Какое-то приложение жрет трафик пыхта4ог Свободное общение 22 13.11.2007 15:12