Форум: "Начинающим";
Текущий архив: 2008.11.02;
Скачать: [xml.tar.bz2];
Внизftp, indy (TIdFTP) Найти похожие ветки
← →
workbench (2008-09-23 09:36) [0]Здравствуйте, закачиваю файл с ftp посредством Indy IdFTP так:
FTP.Get(Sourse, Dest, true, false)
// файл нужно заменить, докачка не нужна
при этом прога зависает через раз, когда прохожу отладчиком то "подвисает" (прчём намертво) именно на этой строке, подключён в пассивном режиме, подскажите, плиз, что может быть...
← →
Сергей М. © (2008-09-23 09:41) [1]А где у тебя перехват и обработка исключений ?
← →
workbench (2008-09-23 09:46) [2]там в блоке всё:
try
FTP.Get(Sourse, Dest, true, false)
except
...
end
только в том то и дело, подвисает, но исключения не возникает(((
← →
Dennis I. Komarov © (2008-09-23 09:48) [3]"Залить" антифриз?
← →
workbench (2008-09-23 09:52) [4]он есть, его св-ва:
active = true
apphaspriority = true
onlywhenidle
таймоут небольшой, он истёкает, но ничего не происходит, по прежнему - висит
← →
Сергей М. © (2008-09-23 09:58) [5]
> исключения не возникает
Думаю, что ты просто его не дождался - по умолчанию таймаут ожидания ввода равен infinite, т.е. бесконечное ожидание.
← →
Сергей М. © (2008-09-23 09:59) [6]
> таймоут небольшой, он истёкает
Где ты его задаешь ? Из приведенного кода это не очевидно ..
← →
Anatoly Podgoretsky © (2008-09-23 10:07) [7]
> workbench (23.09.08 09:46) [2]
А нафига ты первый раз привел какое то извращение, форум не помойка.
← →
Anatoly Podgoretsky © (2008-09-23 10:08) [8]
> таймоут небольшой, он истёкает, но ничего не происходит,
> по прежнему - висит
Он не истекает, ознакомься как он работает в Инди.
← →
workbench (2008-09-23 10:08) [9]свойство TIdAntiFreeze.IdleTimeOut выставлено в 60000 (1 мин), я пробовал ждать 3 минуты, думал ftp-сервер меня отбросит (у него как раз такое время выставлено), но и после 3-х минут ничего не происходит
← →
Сергей М. © (2008-09-23 10:16) [10]
> свойство TIdAntiFreeze.IdleTimeOut выставлено в 60000
А причем здесь антифриз ? У IdFTP есть специальнго заточенное под эти дела свойство ReadTimeout, так вот оно по умолчанию как раз и равно INFINITE.
И если БабаКлава-уборщица на другом конце Тырнета нечаянно выдрала шваброй из розетки шнур питания сервера, ни исключения ни события дисконнекта при таком таймауте ты можешь никогда и не дождаться.
И вообще в каком потоке все эти "чудеса" у тебя происходят ?
← →
workbench (2008-09-23 10:19) [11]знакомлюсь...
Описание sleep:
Sleep is a public class procedure that forces a TIdAntiFreezeBase descendant to yield processor cycles for as many as ATimeout milliseconds
English плохо у меня, я так понял что св-во TIdAntifreeze.IdleTimeOut показывает сколько времени должно пройти до вызова sleep(ATimeout), который в свою очередь в течении ATimeout "даёт работать приложению", так?
← →
workbench (2008-09-23 10:20) [12]
> Сергей М.
В основном потоке
← →
Сергей М. © (2008-09-23 10:28) [13]Выкинь свой антифриз по кр.мере на момент отладки - он отношения к "проблеме" вообще не имеет.
Установи ReadTimeout, скажем на 10 сек и лови исключение)
← →
workbench (2008-09-23 10:43) [14]
> Сергей М
всё так и сделал... говорю то что вижу: 3 раза закачал нормально потом опять подвис, исключения по readtimeout`у нету(((
try
FTP.ReadTimeout := 10000;
FTP.Get(Sourse, tmp_file_name, true, false)
except
...
end
← →
Сергей М. © (2008-09-23 10:56) [15]Попробуй еще св-во TransferTimeout выствить в ограниченное значение - оно по ум-ю тоже равно INFINITE
← →
workbench (2008-09-23 11:13) [16]такого что-то и не видно тут (TransferTimeout в TIdFTP), из-за чего такое вообще может быть-то, касперского отключил уже - всё равно стабильно переодически подвисает, караул просто ((((
← →
workbench (2008-09-23 11:25) [17]вот ещё что интересно, файл который закачиваю занимает 45340 байт, когда я пытаюсь его скачать и при этом происходит подвисание он на диске всё-таки появляется и занимает 45300 байт (кратно стам), а у меня как раз RecvBufferSize равен сотне, может с этим как-то связано?
← →
clickmaker © (2008-09-23 11:54) [18]сделай буфер побольше
512 или 1024
← →
workbench (2008-09-23 12:58) [19]да вот поставил 512, пока ни разу не сбойнуло, возможно и правда из-за этого... всё равно дурдом конечно (я имею ввиду такую вот закачку, раз через раз, возможно конечно руки кривые, но здесь косячить-то вроде особо негде)
← →
Сергей М. © (2008-09-23 13:08) [20]
> здесь косячить-то вроде особо негде
9-я индейская версия славна "косяками" на ровном месте.
Их и в 10-ке немало, но тем не менее)
← →
workbench (2008-09-23 15:40) [21]да, пока всё гуд, может и дальше всё нормально будет... по поводу [20] - доселе всё с этими компонентами было хОКкей, удивлён что в них есть "общепризнанные" косяки...
спасибо всем кто принял участие в теме :]
← →
Anatoly Podgoretsky © (2008-09-23 15:49) [22]> workbench (23.09.2008 15:40:21) [21]
Только один - сплошной глюк.
← →
workbench (2008-09-23 15:52) [23]
> Anatoly Podgoretsky
Я в вашей книге (в вашем переводе, "Indy in depth") таких слов не встречал (хотя читал далеко не всё)
← →
Anatoly Podgoretsky © (2008-09-23 15:58) [24]> workbench (23.09.2008 15:52:23) [23]
Основной глюк в том, что это чужеродное для Виндоус тело.
А если ты читал хотя бы комментарий от переводчика, то ты должен был обратить внимание на фразу "что эта книга не о Инди"
← →
workbench (2008-09-23 16:12) [25]а я это принял за "афоризм" ))), а если серьёзно - то на равных рассуждать об этих компонентах не могу конечно
← →
Anatoly Podgoretsky © (2008-09-23 16:17) [26]> workbench (23.09.2008 16:12:25) [25]
Ну я тем более не могу, я с ними не работаю.
← →
Dennis I. Komarov © (2008-09-24 09:24) [27]
> Anatoly Podgoretsky © (23.09.08 16:17) [26]
А где же реклама ICS? ;)
← →
Anatoly Podgoretsky © (2008-09-24 09:57) [28]> Dennis I. Komarov (24.09.2008 9:24:27) [27]
Для тебя - переходи на ICS,
Инди бяка.
← →
Anatoly Podgoretsky © (2008-09-24 09:57) [29]Удалено модератором
← →
Dennis I. Komarov © (2008-09-24 10:16) [30]
> Инди бяка.
+1, но ICS тоже надо уметь готовить. (да и не все там у них гладко)
WinInet.pas!!!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.11.02;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.008 c