Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Зависание при работе с FTP


Автор: harry 28.7.2006, 14:08
У компонента NMFTP есть такая процедурка TForm1.NMFTP1ListItem(Listing: String). Так вот она запускается при выполнени NMFTP1.List, а при вызове процедуры каждый раз в Listing оказывается строчка, содержащая информацию об одном файле. 
Так вот она "переберет" все файлы в текущей папке на сервере, встает в end и, собственно говоря, и усё. Дальше алгоритм не выполняется, а проц грузится на 90-98% от этого процесса. 
Что делать с этим? Памагите кто знает.  smile 

А самое интересное, что это не происходит не всегда. Только при Passive = true. 

Автор: drkot 28.7.2006, 14:26
ошибка в 17 строке

используй инди 

Автор: harry 29.7.2006, 09:09
что значит ошибка в 17 строке?

IdFTP - вообще отказывается выполнять следующую строку
IdFTP.List(a)

Говорит:
'Access violation at address 00457C9B in module 'Project1.exe'. Read of address 88D88B7F' 

Автор: drkot 31.7.2006, 12:09
а ты а инициализировал? (креате вызови).

Добавлено @ 12:09 
Цитата(harry @  29.7.2006,  09:09 Найти цитируемый пост)
что значит ошибка в 17 строке?

читай faq. 

Автор: harry 31.7.2006, 12:14
Инициализировал. Все работает.
Спасибо.

Но всетаки мне интересно насчет NMFTP (на нем всетаки вся прога работает, переделывать страшно не хочется)

Эту проблему получить не сложно (проблема потому что ошибки Delphi не выдал). Достаточно поставит пассивный режим и запустить лист.

NMFTP1.Passive:=true;
NMFTP1.Connect;
NMFTP1.ChangeDir('private');
NMFTP1.List;

Вот и все. В режиме отладки курсор останавливается на этой строчке, а процессор на 90-98% загружен программой.

Если же есть обработчик события ListItem. Вот, например, такая процедура:
procedure TForm1.NMFTP1ListItem(Listing: String);
begin
Memo1.Lines.Add(listing);
end;

То список файлов выводится в Memo1, а потом в режме отладки курсор встает в end процедуры и опять двадцать пять. Если только не давать проге дойти до энда, но как.

Но это зависание происходит не всегда, а в 70-50% 
  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)