Last week in Santa Clara, CA I conducted my first class on Delphi 2005. Thanks to the students from Sacramento for making the week so pleasant.
So, you ask, how was the week with Delphi 2005? How did it stand the test of exercising most of its features during the week? Did it crash at any time? Did we find weak areas? Did we find superb areas? Read on to find out.
It was so great to find myself teaching Delphi again. When I tried teaching Delphi 8 shortly after its release, the process was painful and demoralizing. We quickly made the decision not do that anymore so as to eliminate the sense of frustration experienced by the students and their instructor.
But working with Delphi 2005 was a very different experience. In fact, I have to say the week of teaching Delphi 2005 was pleasant! We found a lot of problems together but I could honestly say that the product was usable and productive. Frustrating at times, but hey, it looks like we are getting a Patch any day now in December 2004.
ECO is a cool product. I like it a lot! It is very powerful! We ran two different exercises during the class:
- First we generated the model, code and UI based on the Northwind Database in MS SQL Server 2000. This worked beautifully.
- Then we built the whole model from scratch. We generated the code and the UI, and then exercised the Persist to XML option. It also worked beautifully!
My only comment on ECO is that the product is screaming for some wizards: there are way too many steps to remember. If you open the wrong model or file it is easy to get lost, and it can be difficult to get back on track. I am grateful to Anthony Richardson for writing tutorials that saved the day!
The Project Manager is flaky! During the .NET Remoting chapters, having four projects open under one Project group caused weird problems during compilation. We kept getting errors that one project could not see the assembly of another in the same group. This happened several times. Closing the Project group completely and reopening it fixed these problems, but it was annoying having to close and reopen the entire Project Group so many times during that exercise.
The students were very interested in Interop because of the amount of ActiveX and Win32 code they have. They knew that their migration would occur slowly over time; that it would be too difficult to do a complete rewrite all at once. I looked for the menu item “Import Type Library” everywhere, under .NET and under Win32 — no GO! I can’t believe there is no “Import Type Library” in Delphi 2005! It is especially important in Win32, although it is much needed in .NET as well.
The bigger surprise was not finding “ActiveForm” under the ActiveX tab in Delphi Win32. That was disturbing to the students, especially for those who use ActiveForms a lot. But I quickly cooled the flames by reminding them that: “COM is like smoking! If you are doing it, you need to stop! And if you are not, then you don’t need to go there!”
The Editor was nice and behaved well during the week. The one exception was CodeSnipets. I would have liked to be able to highlight some code and drag that code to the CodeSnipet window to create a new entry. It seems that this was intended to be a feature, but it is not working yet in the IDE. Personally, I believe it is a potentially great feature, and it would be very nice to have it working.
The Borland Data Providers appeared to us to be very nice indeed and to work well. We did not stress them out by any means. We did, however, successfully work through several examples that deal with the Connection, DataAdapter and Command Objects.
This feature is MUCH MORE stable than in Delphi 8. I like the Deployment Manager a great deal. It allows the developer to easily synchronize and deploy projects to any directory or FTP site. It even has pieces of the old check-in tool we used to use on the team at Borland to show diffs and visual representation of changes.
The debugger was very stable. I was impressed by the fact that the CPU window, now docked into the editor, can show IL, ASM and Delphi code all at once. This really gives the developer a better understanding of what is happening in their code. I also found the inplace editing of Breakpoint conditions to be a cleanly executed and highly useful feature.
I am still not convinced that the changes from Delphi 8 to 2005 in the namespace area are sufficient to bring Delphi up to speed as a first class citizen in the world of namespaces. The language is screaming for a new keyword “Namespace” that will fix the problems once and for all. Danny Thorpe, explained to me during our trip to Toronto that he is considering that approach. He said, however, that it will be a major job to implement that feature in the compiler. Furthermore, he was worried that it would not work well with the FAST one pass compiler we have now. I just don’t like to see all the stuff I see when I open a Delphi written assembly with the reflector. When viewing an Assembly in C#, I would like to see my namepaces exactly as I declared them.
All in all, both the class and I were pleased with the experience we had while playing and working with Delphi 2005 for the whole week. There were a few rough spots, but the product stood up well to our fairly extensive testing.