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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Приостановить выполнение программы 
:(
    Опции темы
Mach3
Дата 14.8.2008, 08:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Привет...
В цикле загружаю вебстраницы...

Код

var links:Tstringlist;
web:string;
begin
Links:=TstringList.Create;
Links.LoadFromFile('...');
For i:=0 to Links.count-1 do begin
web:=idhttp1.get(links[i]);
......
end;
end;

При выполнении программы все стоит колом, окно не двигается...
Хочу сделать кнопку ПАУЗА...
Как приостановить выполнение цикла или загрузку страницы?
И еще вопрос... Если обрывается соединение, вылетает ошибка...
Как сделать условие на ошибку или на удачную загрузку страницы?
Заранее благодарен.
--------------------
Век живи - век учись...
PM MAIL ICQ   Вверх
THandle
Дата 14.8.2008, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

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



Цитата(Mach3 @  14.8.2008,  09:11 Найти цитируемый пост)

При выполнении программы все стоит колом, окно не двигается...


Application.ProcessMessages?

Цитата(Mach3 @  14.8.2008,  09:11 Найти цитируемый пост)
Хочу сделать кнопку ПАУЗА...


Выносить загрузку в отдельный поток, по одной кнопке (СТАРТ) запускать, по кнопке ПАУЗА приостанавливать...

Цитата(Mach3 @  14.8.2008,  09:11 Найти цитируемый пост)
И еще вопрос... Если обрывается соединение, вылетает ошибка...


Ну отлавливай её try/except...
PM   Вверх
aleksh
Дата 14.8.2008, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



на всякий случай добавлю: Application.ProcessMessages и проверка на нажатие "паузы" следует вставить в цикл, например:
Код

For i:=0 to Links.count-1 do begin
web:=idhttp1.get(links[i]);
if x then
  begin
  ...
  break;
  end;
end;

x -- это boolean, если нажата "пауза" присваивается true. перед break (прерывание цикла) хорошо бы сохранять номер строки, на которой остановились, ибо цикл "приостонавливатся" не умеет, и потомначинать цикл с сохранненого номера (но это смотря для чего нужна пауза)
а вот с паузой загрузки сложнее, да и зачем она?
PM MAIL   Вверх
Mach3
Дата 14.8.2008, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



С циклом разобрался... Спасибо..
А как бороться с тем, что пока загружается страница (idhttp1.get) программа ''зависает''?
--------------------
Век живи - век учись...
PM MAIL ICQ   Вверх
Poseidon
Дата 14.8.2008, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

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



Цитата(Mach3 @  14.8.2008,  10:55 Найти цитируемый пост)
А как бороться с тем, что пока загружается страница (idhttp1.get) программа ''зависает''?
 тебе же ответили:
Цитата(THandle @  14.8.2008,  08:15 Найти цитируемый пост)
Выносить загрузку в отдельный поток




--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
aleksh
Дата 14.8.2008, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



есть опосение, что второй поток не особо поможет, ибо поток для чего именно: очереди закачек (нужна ли она), или под каждую закачку (есть ли резон)?

toMach3: а программа на долго зависает? и каков канал?
PM MAIL   Вверх
Mach3
Дата 14.8.2008, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



зависает на 3-5 секунд при скорости 3 килобайт/сек..
Это загрузка одной страницы + парсинг...
вобщем после нажатия кнопки я через 3-5 сек вижу в мемо1 парсированную страницу...
А вообще программа должна загрузить и обработать более 200 страниц за весь цикл...

Добавлено @ 11:44
Цитата

Выносить загрузку в отдельный поток

Если честно, я плохо понимаю что это значит... 
Может посоветуйте что почитать?

Это сообщение отредактировал(а) Mach3 - 14.8.2008, 11:49
--------------------
Век живи - век учись...
PM MAIL ICQ   Вверх
aleksh
Дата 14.8.2008, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



про поточность сюда, а вот со скоростью интересней: во-первых скорость канала (аппартная проблема), парсинг (может его можно улучшить, поищите по форуму на тему парсинга), а если текста много -- так это может и из-за memo тормозится.

кстати, а почему memo, а не twebbrouser, что-то спецефичное?

так что, не все так ахово, могло бы быть и медленее...
PM MAIL   Вверх
Mach3
Дата 14.8.2008, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Спасибо за материал... Читаю, разбираюсь...
Я ничего не могу сделать с программой, пока загружается страница... 
Проверил.... А мемо это так для проверки работоспособности парсера..

--------------------
Век живи - век учись...
PM MAIL ICQ   Вверх
Poseidon
Дата 14.8.2008, 13:14 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

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



Цитата(aleksh @  14.8.2008,  11:30 Найти цитируемый пост)
есть опосение, что второй поток не особо поможет, ибо поток для чего именно: очереди закачек (нужна ли она), или под каждую закачку (есть ли резон)?
Опасения напрасны. А поток нужно делать как-раз для того кода, который приведен в первом посте. 

Цитата(Mach3 @  14.8.2008,  12:13 Найти цитируемый пост)
Я ничего не могу сделать с программой, пока загружается страница... 
Вот именно от этого тебя и спасет TThread



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
aleksh
Дата 14.8.2008, 13:34 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



а что нужно делать с программой, когда она страницы подгружает? лучший (по моему) вариант -- увеличить скорость сети, осталное -- от лукавого.
а можно так сделать: сначала все загрузили, и только потом начинаем парсить? если да, то можно так: поставить счетчик на форме для загруженных станичке, гиф повесить, периодически сообщать что сейчас прога делает. это может показаться смешным, но наблюдения показывают что эти манипуляции повышают быстродействие программы (хоть и восприятие). сказ сей шутка, но в нем намек серьезный
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

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

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

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


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

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


 




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


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

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