![]() |
Модераторы: Snowy, Poseidon, MetalFan |
![]() ![]() ![]() |
|
inside |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
Ребят, извините, если вопрос глупый. Считаю в процентах кол-во закаченного файла.
max_bytes - общий размер файла Вот только со временем, при закачке большого файла - прога виснет, но по завершении закачки отвисает. Как решить проблему? |
|||
|
||||
Nickey |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 21.7.2006 Репутация: нет Всего: нет |
ЭЭЭ,в отдельный поток может ее пихнуть?
|
|||
|
||||
Matematik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1027 Регистрация: 11.3.2006 Репутация: 24 Всего: 50 |
Поиграй настройками антифриза
|
|||
|
||||
inside |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
А что такое антифриз? Не слышал про это =(
В отдельный поток засунуть поможет? |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
Просто найди TIdAntifreeze, брось его на форму.
|
|||
|
||||
inside |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
Всем ещё раз привеееет =)))
Народ, я поробовал AntiFreeze - ничего не получилось - прочитал, что он подтормаживает.. Решил поэтому сделать отдельным потоком.. Вроде нормально получилось, вот только такой вопрос - как теперь обработать события OnWork & OnWorkBegin & OnWorkEnd...???? ![]() Дело в том, что я хочу отслеживать процесс закачки.. Кстати - в новом процессе я использую такой код. Всё ли правильно?!
Пробовал просто приравнять их к процедурам - обработчикам событий. если писать через VCL... Но говорит о несовпадении типов TNotifyEvent & procedure ![]() |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
Правильно. Потому что процедура должна быть с параметром:
|
|||
|
||||
inside |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
А если параметры оставить те же, что и в обработчиках событий в VCL:
procedure IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer); они передадутся в резльтате такого равенства: ftp.OnWork=IdFTP1Work???? только вот ещё проблема в том, что компилятор не понимает, что такое AWorkMode.... Где есть эта запись? Спасибо!! ![]() |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
Именно. При присваивании событию, обработчик должен иметь параметры, соответствующие ожидаемых компонентом.
При этом имена переменных могут отличаться - главное количество, порядок и тип параметров. TWorkMode находится в IdComponent. |
|||
|
||||
inside |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
Snowy, блииииииин, точняяяяяк =))) Спасибо огромное! Побежал пробовать
|
|||
|
||||
inside |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
ну в общем я оформил новый поток:
Но что-то программа всё равно подвисает.. Цыферки в статус баре один то обновляются, то подвисают. Само окно вообще всё виснет. В чём косяк. Где я напортачил? ![]() |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
А зачем ты аплод запихал в синхронизацию? Так он у тебя в основном потоке работать будет.
Просто вызови его. Иначе смысла в треде никакого. |
|||
|
||||
inside |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
![]() ![]() ![]() А в синхронизацию запихать только обновление статус бара????? ![]() ээээ.. вот только как это сделать?! Ведь обработчики событий тогда буду вызываться в другом потоке... а оттуда нет доступа к элементам VCL... Это сообщение отредактировал(а) inside - 29.8.2006, 13:38 |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 53 Всего: 484 |
||||
|
||||
inside |
|
|||
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 12.7.2006 Репутация: нет Всего: нет |
Точняк - всё сделал и всё работает отлично...
Но... вот ещё один вопросец... ![]() У меня происходит закачка файла... я хочу сделать возможность её отмены.. Но часть файла уже закачивается на сервер и я хочу сделать, чтобы при нажатии отмены этот кусок удалялся. При нажатии отмены я вызываю метод Terminate. Вот только как мне обработать закрытие и удалить файл - ведь Terminated я не могу проверять, разве что в событии OnWork... (Если можно там, то можно ли просто взять и из этой процедуры удалить файл и закрыть поток?! ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |