I had been intending to blog a review of Cary Jensen’s new book when Alister Christie came along and beat me to it, and in a snazzy video form no less. Boringly enough, I’ll stick to the old-fashioned written word though — I wouldn’t dare do otherwise!
As its title very descriptively says, Delphi in Depth: ClientDataSets is a book focussed upon the TClientDataSet component, as found in most editions of Delphi for a long time now. Given not all the things done with a client dataset are specific to it, the book as a result has a less limited focus than its title may imply. For example, one chapter is devoted to the TFieldDef and TField classes, both in the practical terms of how to set them up and in the more conceptual ones of why they both exist in the first place (a question lacking an obvious answer for a newbie!). That this (and indeed other) aspects of the VCL’s general database support are covered isn’t a bad thing though – far from it, it helps make the book a truly comprehensive resource for TClientDataSet-based development.
In terms of structure, the book has 15 chapters spread over a bit more than 300 pages. This meant each chapter has a definite focus (too many programming books I find have long, meandering chapters that should be broken down). In terms of coverage, the book includes chapters on (amongst other things) setting up the aforementioned fields, defining indices, managing the change cache, using aggregates and understanding nested datasets, before ending with a couple DataSnap chapters. While I read the book sequentially myself, its chapters are frequently self-contained enough to be read out of order too. It also has an excellent index.
While all were informative, the chapters I found particularly successful were those with a more pronounced conceptual element, one example being the chapter on cloned cursors in its covering typical usage scenarios. If I were to be hyper-critical, I would have liked a bit more of that sort of thing in other chapters too. In other words, on occasion, it would have been nice to be told up front the purpose of a given feature before being led through how to use it.
Another small negative was the book taking a little long to get going. Admittedly, I have been reading a couple of books in the O’Reilly ‘Nutshell’ series recently, which are edited to have a very abrupt style. Nonetheless, following a general ‘Introduction’ with a bit too much history for my liking, the first chapter proper of Delphi in Depth (‘Introduction to ClientDataSets’) could have been half the length without losing anything substantive. Once the two introductions were out the way however, I found the book well paced with very little cruft. All in all, it is highly recommended.