Newsgroups : Borland : borland.public.delphi.internet.winsock : 2006 Oct : Re: IdFTP.DirectoryListing

www.cryer.info
Managed Newsgroup Archive

Re: IdFTP.DirectoryListing

Subject:Re: IdFTP.DirectoryListing
Posted by:"Remy Lebeau (TeamB)" (no.spam@no.spam.com)
Date:Tue, 24 Oct 2006 13:55:10

"Hubert Anemaat" <hubert@anemaat.nl> wrote in message
news:453e6f7d@newsgroups.borland.com...

> I am using Indy 10.
>
> No, I did not add a IdFTPListParse unit to my uses clause.

That is the problem then.  TIdFTP in Indy 10 uses a plugin architecture for
its DirectoryListing parsers.  There are no parsers active by default,
because TIdFTP has no clue what kind of servers you are going to be
connecting to.  You have to explicitially add the desired parser units
individually to your uses clause to suit your particular needed.  Or just
include the IdAllFTPListParsers unit, which activates all of Indy's
available parsers, which may be overkill.

> I have not read this in the help documentation.

I quote from the Indy 10 help file:

    --- TIdFTP Class ---

    Directory Listings Using TIdFTP

    One of the key features of the FTP protocol is the ability to access a
list of files found in a directory on the remote host using the FTP LIST or
NLST commands. TIdFTP implements this feature, and captures the list of file
names and optional file details in the ListResult property.
The FTP protocol (by design) isolated the FTP client from the nuances of
host-specific file systems. In obeyance of this design goal, it also did not
specify a standard representation for the contents of a directory listing.
Instead, FTP clients have historically relied on defacto representations for
the content of a directory listing as used in specific server
implementations.

    There are FTP extensions that have been presented to the IETF (Internet
Engineering Task Force) that specifies new FTP commands to obtain listings
of remote directories in a defined format. Two commands are defined, MLST
which provides data about exactly the object named on its command line, and
no others. MLSD on the other hand will list the contents of a directory if a
directory is named. The MLST and MLSD commands are intended to standardize
the file and directory information returned by the Server FTP process. These
commands differ from the LIST command in that the format of the replies is
strictly defined although extensible.

    The MLST format is intended for machine processing, not human viewing,
and as such the format is very rigid. implementations must not vary the
format by, for example, inserting extra spaces for readability, replacing
spaces by tabs, including header or title lines, or inserting blank lines,
or in any other way alter this format.

    In TIdFTP, the List command can use either the FTP LIST or NLST commands
to request the content of a directory listing. In addition, the ExtListDir
and ExtListItem methods can be used to invoke the FTP extenstion commands
MLST and MLSTD for servers supporting the features.

    The Indy library recognizes these defacto standards, and makes
provisions for the IETF draft standards. TIdFTP provides the capabilitiy to
parse the various formats for the textual content in the ListResult property
into a structured representation of the directory stored in the
DirectoryListing property. At the present time, Indy offers parsers for 30
different host-specific directory listing formats. Additional parsers are
offered as new directory listing formats are encountered and codified. Use
the IdAllFTPListParser.pas unit to include and register the known directory
listing parsers for the Indy library.


    --- TIdFTP.DirectoryListing Property ---

    Additional parsers are available that recognize the defacto directory
listing formats used in approximately 30 different platforms and operating
systems. To include additional parsers for listing formats, the unit
containing the parser must be added to the project containing the FTP
client. Each parser is automatically registered in the initialization
section for the unit. Include the IdAllFTPListParsers.pas unit in your
application to force all known FTP directory listing parsers to be included
and registered.


Gambit

Replies:

In response to:

www.cryer.info
Managed Newsgroup Archive