Question

I am responsible for porting a Delphi 2007 application to C# and have absolutely no experience with Delphi. I am wondering what is the difference between the two Indy versions Delphi includes - Indy 9 and Indy 10. At this point I don't even know what an Indy is. Can someone help me out? Are they just different versions of the Delphi Library? What are the implications of using one or the other?

Thanks!

Was it helpful?

Solution

Indy is short for Internet Direct, an open-source library for doing networking. It's most commonly used for doing internet-related things, like sending emails and whatnot.

If you're porting from a legacy (say, Delphi 7) application that uses Indy 8 or 9, you'll find using Indy 9 in Delphi 2007 will be an easier port. If you don't care, use Indy 10, as it's got many significant improvements to the library, and there are also some big architectural changes.

OTHER TIPS

Look at the Indy 10 documentation, specifically the sections What's new in Indy.Sockets version 10 and Changes to the Object Hierarchy

http://www.indyproject.org/docsite/html

Indy is a winsock wrapper that provides blocking socket behavior for network / internet programming (ftp, telnet, http, etc.)

Indy 10 is a newer version from Indy 9, and while the changes may improve the architecture, they removed some features and move things around. If your program makes use of the parts that were moved or removed then porting to Indy 10 will be painful.

If you are moving from Delphi to C# then you will find the C# version of Indy is VERY different then the Delphi version. Well at least when I looked at it.

Some details:

  • Indy10 is afaik already in D2005, though versions D2005 and D2006 allow to select which one to install.
  • .... which doesn't matter, in any case always install the latest and greatest to get the newest fixes.
  • Indy10 is better internally, but because they split it in several modules, beginners often have problems manually compiling it. Roughly the way of working of the Indy devels is thrust on the users, something that I think was unnecessary in retrospect since all packages must be updated as a whole in practice.
  • Indy10 is portable. The indy9 Kylix support was not much more than an hack.
  • Both work with FPC/Lazarus, but Indy9 only on win32. Indy10 also on Unix, OS X, win64 and wince. On lazarus, the Indy10 port is generally better.
  • Last time I did significant work with it, the Indy10 examples were inferior to the indy9 ones.
  • Indy10 got mired in the .NET morass, and is significantly less zero copy than indy9. This became worse over Indy10's lifetime.
  • Some of the original goals of Indy10 (like fiber support for very high connection counts) were not realized. The need for fibers would need to be reevaluated anyway with the gigantic increase in (average) available memory though, and I also don't know how Microsoft sees fibers nowadays.

Indy Delphi is a library(Tcomponent) for Delphi representing the true power of WinSock.It provides components for tunelling,TCP/UDP connections and much more.

The official page is: http://www.indyproject.org You will find everything you need there.

Indy 9 is an old version of Indy library. Indy 10 came out in 2008 along with Delphi 2009.The whole structure of the library is changed in Indy 10.

In my opinion,Indy 9 was better.

The BorCon 2004 Programming Tracks included an article by Chad Hower, Upgrading to Indy 10.

Abstract: This session covers the changes made to Indy 10 and how to quickly port existing code. It also covers the advantages of Indy 10 and why you should port your code. While performance and other demonstrations are shown, this session is a practical overview and does not focus on demo code.

Content:

  • Upgrading to Indy 10
  • Indy 10 Status
  • Installing Concurrent Versions
  • Compatibility
  • Migration
  • Major Changes and Additions
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top