![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 26.11.2010
Сообщений: 7
|
![]()
Здравстуйте, уважаемые формучане!
Написал программу, все работает, но через определенное время (часа 2) выскакивает "External error". Смотрю в диспетчере - процесс съел около гигабайта оперативной памяти. Суть программы - грузит из файлов данные, заходит через Webbrowser на страницы, отправляет нужную информацию, и так все в цикле. Данные грузятся из файлов через Tstringlist, после отправки в нужное место очищается с помощью Free. Вроде бы все окей, но память утекает как вода. Код:
Последний раз редактировалось mihali4; 26.11.2010 в 12:44. |
![]() |
![]() |
![]() |
#2 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]()
Так немудрено... Никакого окея не наблюдается.
У вас из TForm1.load вызывается Tform1.main, в которой вновь и вновь создаются экземпляры Код:
Вот они и наапливаются, неосвобожденные... Перенесите их создание и освобождение в startClick(Sender: TObject); |
![]() |
![]() |
![]() |
#3 |
Регистрация: 26.11.2010
Сообщений: 7
|
![]()
Согласен с вами, Main вызывается из Load, но ведь из main затем снова load вызывается, которая содержит строки
l.free l1.free, которая, по идее, должна убивать созданные в main Tstringlist'ы. Создать Tstringlist'ы в startclick - это сейчас попробую, однако все же интересно, почему так происходит, или все-таки я чего-то недопонимаю в логике своей же программы. ____ Попробовал убрать Tstringlist.create в start.click - ничего не помогло! память как утекает, так и утекает. Мистика какая то. Может быть, это все-таки Twebbrowser не осовобождает память из под чего-то? Последний раз редактировалось FReeZ777; 27.11.2010 в 12:27. |
![]() |
![]() |
![]() |
#4 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]()
Попробуйте закомментировать содержимое процедуры Load, чтобы она просто ничего не делала.
И погоняйте... |
![]() |
![]() |
![]() |
#5 |
Регистрация: 26.11.2010
Сообщений: 7
|
![]()
Сделал как сказали, все так же, только память грузится еще быстрее.
Вообще непонятно, ведь Stringlistы создаются только один раз при клике на кнопку а потом в них только циклично грузятся из файла данные. По идее содержимое Stringlistа должно заменяться вновь загруженным файлом, я даже на всякий случай перед каждой новой загрузкой добавлял: l.clear; дабы очистить предыдущий лист, если там что-то осталось, но ничего не помогло. Я скоро свихнусь. |
![]() |
![]() |
![]() |
#6 | |
Регистрация: 26.11.2010
Сообщений: 7
|
![]()
Методом экспериментов пришел к тому, что Tstringlist тут вообще ни причём
Память грузит все-таки Twebbrowser. При цикличном серфинге по страничкам память неумолимо растет. Динамическое создание и освобождение webbrowser'а не дает никакого эффекта вот что нарыл по этому поводу: Цитата:
|
|
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
не вижу чтоб вы использовали интерфейс IDispatch.
так что не то вы нашли, но вообще такой вопрос, вам зачем нужен WB? Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#8 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]()
Да вроде бы по-русски написано, что нужно использовать WebBrowser1.ControlInterface.Docume nt вместо WebBrowser1.OleObject.Document...
Можете сами погуглить по "дельфи Twebbrowser утечки памяти", там люди именно об этом говорят, как о единственном способе борьбы. |
![]() |
![]() |
![]() |
#9 |
Регистрация: 26.11.2010
Сообщений: 7
|
![]()
Webbrowser нужен для цикличного серфинга страниц
принцип. Грузим страницу>заполняем там нужные формы>грузим следующую страницу и так далее |
![]() |
![]() |
![]() |
#10 |
Регистрация: 26.11.2010
Сообщений: 7
|
![]()
Да гуглил я, гуглил, в том то и дело, что никакой толковой инфы по этому поводу не нашел, поэтому прошу тут
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Утечка памяти | Juffin | Общие вопросы Delphi | 3 | 02.11.2010 12:11 |
Утечка памяти | ZvEr_HaCkEr | Свободное общение | 13 | 24.09.2010 19:30 |
Indy в потоке - утечка памяти | PUH | Фриланс | 5 | 28.12.2009 14:06 |
утечка памяти в С++ | vengo | Общие вопросы C/C++ | 9 | 10.06.2008 21:24 |
DrawState - утечка памяти? | unnamed | Win Api | 2 | 11.04.2007 18:36 |