Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Закачка через IdHTTP, как убоать зависание 
:(
    Опции темы
Pentium02
Дата 20.12.2006, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 29.4.2006
Где: Россия

Репутация: нет
Всего: 1



Короче, при закачке файла через IdHTTP прога намертво виснет, пока нее скачает файл. Как убрать зависание? Прбовал антифриз не пашет.
PM MAIL WWW ICQ   Вверх
Snowy
Дата 20.12.2006, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Антифриз работает только, если IdHTTP лежит на форме.
При динамическом создании, антифриз работать не будет.
PM MAIL   Вверх
Pentium02
Дата 20.12.2006, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 29.4.2006
Где: Россия

Репутация: нет
Всего: 1



Цитата(Snowy @ 20.12.2006,  18:51)
Антифриз работает только, если IdHTTP лежит на форме.
При динамическом создании, антифриз работать не будет.

А он как раз на форме и лежит, и антифриз и IfHTTP
PM MAIL WWW ICQ   Вверх
Romikgy
Дата 20.12.2006, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



тогда в отдельный поток и динамическое создание 
Цитата(Snowy @  20.12.2006,  17:51 Найти цитируемый пост)
IdHTTP





--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Pentium02
Дата 20.12.2006, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 29.4.2006
Где: Россия

Репутация: нет
Всего: 1



Вот смотри как я делаю:
Код

Procedure TMainForm.DownloadFile(URLName, OutPath: String);
var
 stream: TMemoryStream;
SaveP: string;
begin
if OutPath = '' then
Exit;
Stream:=TMemoryStream.Create;
IdHTTP1.Get(UrlName, Stream);
SaveP:=ExtractFileName(StringReplace(UrlName, '/', '\', [rfReplaceAll])); //Тут я из урла вытаскиваю имя файла
Stream.SaveToFile(OutPath + SaveP);
Stream.Free;
end;


Это сообщение отредактировал(а) Pentium02 - 20.12.2006, 19:53
PM MAIL WWW ICQ   Вверх
Romikgy
Дата 20.12.2006, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 3
Всего: 146



Код

type
  TNewHTTP = class(TThread)
  public
    constructor Create(const URLName, OutPath: String;CreateSuspended: Boolean);
  private
    { Private declarations }
    url,outstr: string;
  protected
    procedure Execute; override;
  end;


constructor TNewHTTP.Create(const URLName, OutPath: String;
  CreateSuspended: Boolean=False);
begin
inherited Create(True);
FreeOnTerminate:=True;
url:=URLName;
outstr:=OutPath;
if not CreateSuspended then Resume;
end;

procedure TNewHTTP.Execute;
var http: TIdHTTP;
    Stream: TMemoryStream;
    SaveP: string;
begin
  Stream:=TMemoryStream.Create;
http.Get(url, Stream);
SaveP:=ExtractFileName(StringReplace(url, '/', '\', [rfReplaceAll])); //Òóò ÿ èç óðëà âûòàñêèâàþ èìÿ ôàéëà
Stream.SaveToFile(outstr + SaveP);
Stream.Free;
end;


Procedure TMainForm.DownloadFile(URLName, OutPath: String);
var
tr: TNewHTTP;
begin
if OutPath = '' then
Exit;
tr:=TNewHTTP.Create(URLName, OutPath);

end;

Вроде так если нигде не налажал smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Pentium02
Дата 20.12.2006, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 29.4.2006
Где: Россия

Репутация: нет
Всего: 1



А можешь в виде проекта?
PM MAIL WWW ICQ   Вверх
Strell
  Дата 20.12.2006, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 7.12.2006

Репутация: нет
Всего: 1



Цитата(Pentium02 @ 20.12.2006,  18:14)
Короче, при закачке файла через IdHTTP прога намертво виснет, пока нее скачает файл. Как убрать зависание? 

Попробуй создать отдельный поток, поставь ему малый приоритет и в этом потоке делай закачку файла.
PM MAIL   Вверх
KgCoder
Дата 14.3.2008, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 6.3.2008
Где: KGstan

Репутация: нет
Всего: нет



Скажите мне, а в чём причина зависания?
У меня есть прога где я использую инди.
Там сначала я парсю первый поток.
А потом вторым потоком загружаю картику.
Зависает не только в обоих случаях.
Пробовал отправить форму методом пост, тоже зависала...
Может есть всё-таки лекарство?
PM MAIL   Вверх
MetalFan
Дата 15.3.2008, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 14
Всего: 128



Цитата(Snowy @  20.12.2006,  18:51 Найти цитируемый пост)
При динамическом создании, антифриз работать не будет. 

будет-будет! проверено.

Добавлено через 1 минуту
Romikgy, а idHTTP кто создавать будет?

Добавлено через 1 минуту и 24 секунды
Цитата(KgCoder @  14.3.2008,  22:39 Найти цитируемый пост)
Там сначала я парсю первый поток.
А потом вторым потоком загружаю картику.

про что этот человек говорит?!

Добавлено через 2 минуты и 6 секунд
ой йо... тема то древняя


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.3123 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.