|Delphi Clinic||C++Builder Gate||Training & Consultancy||Delphi Notes Weblog||Dr.Bob's Webshop|
|C++Builder 5 Developer's Guide|
Jarrod Hollingworth, Dan Butterfield, Bob Swart, Jamie Allsop, et al
1394 pages (plus CD-ROM)
C++Builder 5 Developer's Guide is published by SAMS and represents the first C++Builder 5 book on the market. This says something about the market for C++Builder 5 books, as this weighty tome was released in late December 2000, whilst C++Builder 5 was released way back in February 2000.
The book was written almost as a protest to the impending lack of material on the product by a number of devotees to the product who named themselves the C++Builder Book Writer's Guild. This conglomerate of 34 authors all contributed to the book, although the principal authors are listed as Jarrod Hollingworth, Dan Butterfield, Bob Swart and Jamie Allsop.
Like its Delphi counterpart (by Teixeira & Pacheco) this book is not a beginner's text by any stretch of the imagination. It is designed to be a useful reference for people who basically know how to use C++Builder and want to achieve things, and does that job well. For example, there are individual chapters on ActiveX, COM, DCOM, COM+, CORBA, MIDAS and multimedia programming.
This is a heavy book (I'm referring to physical mass, not saying the readability is hard). Like many of these all-encompassing books it puts a strain on your shoulder after a while. Disregarding contents (25 pages for the detailed version) and index (a whacking 141 pages), there are 1,254 printed pages in this 2¼ inch wide product.
There are seven parts in the book, although in the contents listing, Part VII is deceptively listed as Part VIII, causing momentary confusion over where Part VII went. Here is a summary of each part:
Part I: C++Builder 5 Essentials, chapters 1 to 11 (764 pages). This includes an introduction to C++Builder and the IDE, advice on C++ programming and UI development, compiling, optimising, debugging and information on using and writing VCL components. This part covers writing custom components, along with detailed coverage of writing property editors and component editors for them (the latter topics are normally covered quite minimally in C++Builder texts).
Part II: Communications, Database, and Web Programming, chapters 12-14 (147 pages). This looks at WebBroker, InternetExpress, XML and database programming (including ADO and IBX).
Part III: Interfaces and Distributed Computing, chapters 15 to 22 (351 pages). This part looks at DLLs, packages, COM, DCOM, COM+, MIDAS 3, CORBA, MS Office integration, and ActiveX programming. I particularly liked the way the Ionel Munoz's COM chapter completely ignores basic COM information and launches straight into a more interesting discussion of dispinterfaces, outgoing interfaces and event sinks. He then delightfully embarks on writing a Multi-Threaded Apartment (MTA) COM server and implementing proxy/stub DLLs for marshaling, topics which only seem to be occasionally mentioned, not demonstrated in other C++Builder texts.
Part IV: Advanced Topics, chapters 23 to 26 (279 pages). These include printing, Win32 API programming, multimedia (including image processing, graphics and sound), DirectX and OpenGL. The printing chapter is very interesting as it goes to the Win32 API level and looks at DEVMODE and PRINTER_INFO_2 structures. It goes on to explain how to change the default printer, switch the paper type and printer bin and so on. The API chapter gives a welcome and thorough introduction to the basics of the Win32 API and a good overview of how to use it, interspersed with many examples.
Part V: C++Builder Application Deployment, chapters 27 to 29 (111 pages). This part looks at creating Windows and HTML help files, creating international applications, shareware, software protection, copyrighting, licensing and distribution.
Part VI: Knowledge Base, chapters 30 and 31 (147 pages). This part has a good selection of how-tos as well as coverage of a real-world C++Builder application.
Part VII: Appendix (14 pages). This gives numerous useful references to C++Builder resources. These are in addition to the references which you can find at the end of several of the chapters in the book, for example the COM chapter and the DirectX and OpenGL chapter.
Clearly, as you can see, there is coverage of a number of good topics, particularly topics that are not covered elsewhere. For example, if you need to make a help file that is accessed from your C++Builder program, where do you go to find out how to do it? Where would you look for information on copyrighting your software? Where would you find information on printing from Windows? The answer to all these questions is C++Builder 5 Developer's Guide.
The trouble I find with any book of this size (apart from giving me arm ache) is that unless you are reading somewhere around the middle of it, there is absolutely no chance of it laying open by itself. Not without creasing the spine so much that you run the risk of splitting it wide open. Is there no market for splitting a large book like this into two volumes, each of which is half the price of the original (or maybe a tad more to cover the extra manufacturing cost)?
Those of you with a keen mathematical insight might have noticed that the total of the page counts for the seven parts of the book far outweighs the 1,254 text pages that are in the book. In fact there are a total of 1,830 pages from the start of Chapter 1 to the end of the Appendix (including all the Chapter and Part title pages). This should tell you that about 600 pages of the book (over 30%, contained in 10 chapters) are only accessible through the CD that comes with it.
There is an electronic version of the book on the CD in the form of a 13 Mb Adobe Acrobat file. This would be an acceptable way of browsing through the rest of the text, but the file has absolutely no hyperlinks in it. The very least I would expect would be for the table of contents to have links, but no. You have to manually scroll through the document to find anything.
When you use the scrollbar thumb in Acrobat Reader, it typically tells you which page you would see if you released it, but this is still of little help. Acrobat tells you the page number relative to the beginning of the document, whereas the Table Of Contents works on the basis of 42 pages of preamble before what it considers to be page 1 occurring. So when Acrobat tells you that you will go to page 787 out of 2048, you actually go to page 745 of the book.
You know, I probably wouldn't mind so much if the chapters which were left on the CD weren't so interesting in the most part. Take for example Advanced Programming with C++Builder. Here is a book designed to give you advanced information, and this advanced chapter, which covers multi-threading, the STL and advanced exception handling is one of the least likely to be read. Come on, be honest; you will flick through the book, but will you browse a link-less Acrobat file? Also not on paper is the COM+ chapter and the whole of Part VI (which includes the Tips, Tricks & How Tos chapter).
If my tone sounds negative so far, don't let that put you off getting this book. None of this negativity is targeted towards what has been penned by the authors. To all that I give a big thumbs up - the content is very impressive. Yes, you can often tell the difference between the writing styles of the different authors, but that is irrelevant in a book like this, in my opinion. What matters is the topics tackled and how advanced they go, and as I have mentioned a few times, this book comes up to scratch on those fronts.
My issues are with all books of this size. Books that are so large that current paper technology cannot contain them. On top of that, when the rest of the book is provided on a CD, not taking advantage of the available technology is simply a demonstration of short-sightedness by the publisher.
The concoction of this book by a band of enthusiasts and a few major contributors smacks very much of the background of the increasingly popular Linux operating system, which has one primary contributor/organiser and many additional contributors. Given the lack of alternative titles and the fine collection of information held in this book, I can only hope that the book gets a similar degree of positive take-up.
Brian Long is a freelance trainer and problem-solver specialising in Delphi and C++Builder work. He is currently filling in spare time trying to get to grips with Linux. Visit his Web site at www.blong.com or email him on firstname.lastname@example.org.
|More Book Reviews|