|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.09.2010, 14:54 | #1 |
Форумчанин
Регистрация: 05.04.2010
Сообщений: 273
|
Ограничение времени выполнения функции
Программа загружает файл из интернета используя ниже показанную функцию, как ограничить время выполнения этой функции(чтобы в случае превышения этого времени остановить выполнение функции и совершить определенные действия)?
Заранее благодарю за помощь в решении этого вопроса. Код:
|
24.09.2010, 15:20 | #2 |
Форумчанин
Регистрация: 21.09.2009
Сообщений: 431
|
а что если в таймер пихануть Tag=1 и в тело:
if timer1.tag= then timer1.enable:=false ????? |
24.09.2010, 15:34 | #3 |
Форумчанин
Регистрация: 05.04.2010
Сообщений: 273
|
Конечно это первая мысль которая пришла мне в голову, перед выполнением функции запустить таймер, и на окончание таймера поставить нужный мне код, но я вспомнил что к примеру с idHTTP такое не прокатило, т.к. программа висела пока idHTTP не вернет управление, по этому решил это даже не пробовать.
|
24.09.2010, 15:57 | #4 |
Форумчанин
Регистрация: 17.09.2010
Сообщений: 229
|
Код:
Правильно заданный вопрос - половина ответа!
|
25.09.2010, 09:08 | #5 |
кривокодер ;)
Форумчанин
Регистрация: 20.06.2008
Сообщений: 707
|
Я, конечно, извиняюсь, но все нормальные люди пишут такие процедуры как загрузку файлов из интернета, загрузку больших файлов с диска, сложные и нудные мат опецации, (и другие "утомительные" процедуры) на исполнение в отдельном потоке... а в теле функции загрузки постоянно обновлять таймер, который по эвенту убивает поток (таймер обычно на 2-3 минуты ставлю)
написал бы пример, но сейчас дельфи нет под рукой... алгоритм мне видится таким: при старте потока создается и подключается idHTTP и создается остановленый таймер, передаются ему адрес ресурса и путь к файлу (и т.п.) while not(idHTTP.connected) do sleep 20; if idHTTP.connected then начать загрузку, запустить таймер записать часть в файл, остановить и снова запустить таймер по завершении загрузки таймер не останавливать. по таймеру idHTTP.Free;Timer1.Free;TNewThread. Terminate; Вот думаю, что как-то так... Но не уверен в работоспособности - писал "на коленках" Код:
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид} Последний раз редактировалось artemavd; 25.09.2010 в 10:06. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ограничение времени выполнения кода | Crystallon | Общие вопросы Delphi | 10 | 16.06.2010 21:59 |
Замер времени выполнения | nickel-j | Компоненты Delphi | 3 | 28.05.2010 17:02 |
Ограничение компьютера по времени использования | snakesoftware | Безопасность, Шифрование | 3 | 03.05.2010 14:44 |
Измерение времени выполнения цикла | Alexcomeback | Общие вопросы C/C++ | 10 | 25.04.2009 16:58 |
ограничение по времени | bunner | Помощь студентам | 4 | 05.02.2009 21:31 |