![]() |
|
Модераторы: Snowy, Poseidon, MetalFan |
![]()
|
|
| diavo1os |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 5.8.2007 Репутация: нет Всего: нет |
Добрый день! подскажите пожалуйста...Как можно закачать файл из интернета без зависания...
Вот так я качаю файл..Но во время скачки у меня форма просто зависает а потом псоле закачки отвисает...и я ничего сделать не могу..возможно ли без зависания скачать ? Заранее спс... Это сообщение отредактировал(а) diavo1os - 5.8.2007, 12:39 |
|||
|
||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: нет Всего: 111 |
diavo1os
Слушай, ну на мастерах тебе же вроде подсказали. Или я ошибаюсь? Добавлено через 1 минуту и 40 секунд Дубль: http://www.delphimaster.ru/cgi-bin/forum.p...218865&n=18 Добавлено через 5 минут и 25 секунд Наверняка повторюсь... Запусти функцию в отдельном потоке или используй последний параметр у URLDownloadToFile. Это тот, в котором ты передаёшь nil. |
|||
|
||||
| diavo1os |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 5.8.2007 Репутация: нет Всего: нет |
я незнаю я там пять раз просил что в теме мне по теме отписывались..только вскольз.поэтмоу и обратился сюда..Пример покажи пожалуйста...я незнаю посл параметр у URLDownloadToFile и про поток я спрашивал кокретнее (Thread). и все молчат...а в интернете литературы на эту тему мало...можешь хоть продемонстрирвоать?:
|
|||
|
||||
| ALeXandrK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 342 Регистрация: 31.1.2007 Где: Санкт-Петербург Репутация: нет Всего: 6 |
Про потоки же целая статья написана. Разбирайся ... не хочу
Тебе же дали направление....
Разбираешь предложение по словам, выделяешь главные, а дальше ... поиск. Удачи -------------------- Богат не/ни тот, у кого много, а тот, кому хватает |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 2 Всего: 459 |
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: нет Всего: 111 |
Alexeis
Блин, ну чё творишь, чё творишь? |
|||
|
||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: нет Всего: 111 |
Alexeis, ну не зря же я начал пальцы ломать на ноуте и писать экзампл. А ты меня опередил. Пришлось через лень дописывать
Пример:
Для примера специально взял большой файл http://torrent.borland.com/turbodelphi_en.iso.zip. Это сообщение отредактировал(а) Yanis - 5.8.2007, 14:20 |
|||
|
||||
| diavo1os |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 5.8.2007 Репутация: нет Всего: нет |
спс большое всем..осбенно Yanis...разобрался....
|
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 14 Всего: 128 |
Yanis, а что от TObject, а не от TInterfacedObject, как Alexeis? ихо так нагляднее) нет лишнего кода
-------------------- There are always someone smarter than you... |
|||
|
||||
| Yanis |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: нет Всего: 111 |
Ну да, так разумнее. Не внимательный потому что, вот и ляпаю Добавлено @ 16:40 Реализация класса TBindStatusCallback:
Отдельное спасибо MetalFan за пинок. Это сообщение отредактировал(а) Yanis - 5.8.2007, 16:40 |
||||||
|
|||||||
| MikeLevinN |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 6.9.2007 Репутация: нет Всего: нет |
Всем привет.
Использовал один из выше приведеных способов в своем приложении, что бы скачать 20Кб. Но ситуация такая, что мне кажется, что где-то память не освобождается. А именно, до начала вызова этого кода, моя программа расходует около четырех Мб, после же, начинает расходовать около шести и даже более. Я было думал на свои кривые руки с разборкой скачанного файла, но попробовал просто вычеркнуть этап скачивания, подменив "скачанный" файл, файлом на диске, в таком случае с расходом памяти все нормально, т.е. это не в моем алгоритме косяк. Сам код этот:
Что тут не так, куда мне копать? |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 2 Всего: 459 |
Это еще ни о чем не говорит. Утечки не проверяют по показаниям таск менеджера. Менеджер памяти делфи редко отдает память винде даже если удалены все объекты, потому что резервирует про запас. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| MikeLevinN |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 6.9.2007 Репутация: нет Всего: нет |
Хмм.. ну я даже не знаю, что и сказать, так просто кушать два метра памяти, на моём, хоть и мальеньком опыте не видел никогда. Просто не понимаю, как такое получается, что именно в данном случае влияет на это?
Т.е. ведь если я создам обычный класс, он у меня отожрет памяти пусть тоже два метра, а потом его удалю, - то расход памяти, судя по task manager сокращается. А тут такое дело, может есть способы все же как-то воздействовать на это, дабы избежать этих лишних расходов? Просто успокоиться не могу ни как. Или не обращать на это внимание? И ещё вопрос в тему, как в данном коде прописать соединение через прокси? |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 2 Всего: 459 |
Нужно воспользоваться модулем для проверки утечек памяти. Что-то такое тут проскакивало на форуме, по завершению создается лог где написано чего и где не было освобождено. Без этого даже и браться не стоит. Кроме того приведенный пример почти пустой, ошибка может быть где угодно. Преведеные доводы не убедительны.
Добавлено через 3 минуты и 8 секунд Модуль называется MemCheck.pas Он не стандартный но найти несложно. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| MikeLevinN |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 6.9.2007 Репутация: нет Всего: нет |
Да я проверяю на наличие утечек через FastMM4, но все нормально, никаких утечек не зафиксировано.
Я ещё просто взял чистый новый проект, прикрутил код и запустил и опять подобная картина, расход памяти возрастает и ниже не становится. Я не понимаю в чем дело. Код в тестовом проекте такой же как и в примере, я добавил лишь:
Это нормальное явление, или как это объяснить? |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 2 Всего: 459 |
Я думаю дело в том что в память загружается еще дополнительно библиотека 'URLMON.DLL'. Вероятно она и занимает много оперативки.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| MikeLevinN |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 6.9.2007 Репутация: нет Всего: нет |
Ну об этом я в первую очередь и думал, но разве так должно быть? Почему она не выгружается, т.е. как её выгрузить?
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 2 Всего: 459 |
Чтобы ее можно было выгрузить ее нужно динамически загрузить руками и получить адрес функции. Ну об этом же почти в любой книжке есть! -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| MikeLevinN |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 6.9.2007 Репутация: нет Всего: нет |
Ничего не помогло. И не понимаю, что происходит. Избавился от UrlMon.pas сделал динамическую загрузку и выгрузку библиотеки.
В ходе выяснилось, что сама загрузка библиотеки памяти много не отжирает, а вот в результате выполнения кода - закачки файла, наблюдается тоже самое память стремительно кушается. При выгрузке библиотеки, память не освобождается. Что не так?
Это сообщение отредактировал(а) MikeLevinN - 13.9.2007, 08:24 |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 2 Всего: 459 |
MikeLevinN, это все же кэширование, причем возможно еще и кэширование винды. Если программу свернуть и развернуть, то первоначально память уменьшится до 600кб, а потом не будет превышать 2000 кб. таск мэнэнджер не показывает всей виртуальной памяти израсходованной программой, возможно такое увеличение связанно с подргрузкой из подкачки самой программы, ведь известно, что программа целиком в ОЗУ не загружается, только необходимый набор.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 14 Всего: 128 |
а ничего, что часть методов CalBackInet ничего не позвращает?
-------------------- There are always someone smarter than you... |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 2 Всего: 459 |
MetalFan, это же тестовый пример, а не реальный, да и не бывает так что ничего не возвращается совсем, просто значение результата неопределено.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Dragin |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 29.9.2007 Репутация: нет Всего: нет |
TThread
|
|||
|
||||
| Coderr |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 234 Регистрация: 27.1.2006 Где: Vesnet Репутация: нет Всего: 0 |
Хм. Что-то не пойму... То ли инет у меня быстрый, то ли я что-то не понял.
Использовал код Yanis'a из этого поста. Вроде даже ничего не менял... Получается так что при скачке файла размером 1,38 Мб label показывает 0, подвисает и через мгновение показывает что всё скачалось. И действительно, всё скачивается. Только процесс не отображается. Собсно, в этом и проблем. Прикладываю сорс. Присоединённый файл ( Кол-во скачиваний: 19 )
Auto_Update.rar 14,84 Kb--------------------
Кодинг - это стиль жизни! |
|||
|
||||
| Coderr |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 234 Регистрация: 27.1.2006 Где: Vesnet Репутация: нет Всего: 0 |
Странно... теперь вобще не качает... :(
--------------------
Кодинг - это стиль жизни! |
|||
|
||||
| vovksextra |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 15.2.2008 Репутация: нет Всего: нет |
||||
|
||||
![]()
|
| Правила форума "Delphi: Сети" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |