Search code examples
delphiftpsftpindywininet

WinInet wrapper for FTP in Delphi


Give advice, please. I want to develop FTP / SFTP / FTPS client download manager in Delphi on WinInet. On what better to do (Indy, ISC Components, WinInet ...)? May already have solutions?


Solution

  • You didn't specify your version of Delphi and target platform (x64 and MacOSX is available in the latest version of Delphi), so here is some generic advice:

    1. WinInet: No FTPS Support at all, so this rules this out for you.

    2. Indy: Packaged with Delphi (free), fully supported in the latest version of Delphi, mature, widely used, uses synchronous model (you need to use threads so network access does not lock the GUI).

    3. ICS Components: Free, mature, apparently no Delphi XE2 support as of now, so no explicit x64 support. Widely used. Uses asynchronious model (no need for threads, uses callbacks on the GUI thread).

    4. Synapse: Lesser known library (free), more compact and easy to understand than the above two. Also has FTPS support, not updated recently but works ok with Delphi 2007-2009. Synchronous model.

    I worked with all four above, and it is hard to recommend one over another. All of them can accomplish what you need (except WinInet), it just comes down to what model (synchronous/asynchronous) you feel more comfortable with or already use in your application, and what level of platform/compiler support you require. If you don't see any reason to choose #3 or #4, I'd say go with Indy since it is bundled with Delphi, has x64/MacOSX support, and will probably work in the next version of Delphi too.