понедельник, 26 октября 2009 г.

Delphi и FTP

Интересная вешь происходит при работе с ftp из Delphi!
Кидаешь на форму TIDFTP, пишем простой код, в котором пытаемся посмотреть что за файлы лежат в нужной директории, например такой:

procedure TForm1.BitBtn1Click(Sender: TObject);
var
I: integer;
begin
If IdFTP.Connected then
Begin
IdFTP.Abort;
IdFTP.Quit;
End;
IdFTP.Host := 'host';
IdFTP.Port := 21;
IdFTP.Username := 'login';
IdFTP.Password := 'password';
IdFTP.Passive:=False;
IdFTP.Connect;

If IdFTP.Connected then
begin
mmLog.Lines.Add('connected');
IdFTP.ChangeDir('/dir');
IdFTP.List;

mmLog.Lines.Add('Файлов: '+IntToStr(IdFTP.DirectoryListing.Count));

for I := 0 to idFtp.DirectoryListing.Count - 1 do
mmLog.Lines.Add(IntToStr(I)+':'+idFtp.DirectoryListing[I].FileName);
IdFTP.Quit;
end
else
showmessage('ошибка подключения');
end;


И ничего не видим :( С ошибкой не вылетает, и результат нулевой.

А дело вот в чем: в Indy начиная с 10й версии необходимо в uses ручками прописывать парсер:
IdFTPListParseUnix - для сервера на Unix/Linux и пр.
IdFTPListParseWindowsNT - для сервера на Windows
IdAllFTPListParsers - а это если для поддержки обоих типов.

После чего все начинает замечательно работать. :)

PS. Что-то блоггер косячит с форматированием...

Комментариев нет:

Отправить комментарий