Delphi XE Starter Notes

[Home]   [Puzzles & Projects]    [Delphi Techniques]   [Math topics]   [Library]   [Utilities]




Search WWW


As of October, 2016, Embarcadero is offering a free release of Delphi (Delphi 10.1 Berlin Starter Edition ).     There are a few restrictions, but it is a welcome step toward making more programmers aware of the joys of Delphi.  They do say "Offer may be withdrawn at any time", so don't delay if you want to check it out.  Please use the feedback link to let me know if the link stops working.


Support DFF - Shop

 If you shop at Amazon anyway,  consider using this link. 


We receive a few cents from each purchase.  Thanks


Support DFF - Donate

 If you benefit from the website,  in terms of knowledge, entertainment value, or something otherwise useful, consider making a donation via PayPal  to help defray the costs.  (No PayPal account necessary to donate via credit card.)  Transaction is secure.

Mensa® Daily Puzzlers

For over 15 years Mensa Page-A-Day calendars have provided several puzzles a year for my programming pleasure.  Coding "solvers" is most fun, but many programs also allow user solving, convenient for "fill in the blanks" type.  Below are Amazon  links to the two most recent years.

Mensa® 365 Puzzlers  Calendar 2017

Mensa® 365 Puzzlers Calendar 2018

(Hint: If you can wait, current year calendars are usually on sale in January.)


Feedback:  Send an e-mail with your comments about this program (or anything else).

Search only




On January 31, 2011, Embarcadero announced a reasonably priced "Starter" version of their latest version of Delphi.  There are restrictions on the amount of annual revenue that can be earned from software produced.  Even more significant for many Delphi 7 Pro or older starter Delphi versions are the incompatibilities or omissions in the new XE Starter.

On this page, I'll post notes on items I find or reported. ( Note: Abbreviations "DXE" and "D7" which I find myself using here, stand for "Delphi XE Starter" and "Delphi 7" versions.)


bulletFrom Embarcadero XE Starter FAQ:

Why might I choose choose Professional instead of Starter?

The Professional editions of Delphi and C++Builder include a number of features not available in Starter. Here are some of the major additional features available when you move up to Professional:

dbExpress local database connectivity to InterBase® and MySQL
Expanded coding tools including Code Completion, live code templates, refactoring, command line tools, code formatter, Class Explorer, unit testing, and translation tools
Additional bundled tools including AQtime Developer, Beyond Compare Differ, Raize CodeSite Express, IP*Works, TeeChart, Rave Reports, InstallAware, and glyFX graphics library
Advanced debugging views and debugging of multi-threaded applications
Web application development with VCL for the Web Personal with limited concurrent connections
Cloud computing integration with Amazon EC2 and Windows Azure
XML, Web Services, and advanced COM/DCOM development
Expanded VCL component set and VCL source code
UML code visualization, providing a visual representation of source code for easier understanding


bulletFrom Bob Swart's "Delphi XE Starter Essentials" book "Notably not supported are the Windows Service application and the Resource DLL Wizard. Also missing are DataSnap Server, Multitier, VCL for the Web, WebBroker, WebServices, WebSnap and XML categories. For these functionalities, the Professional or Enterprise editions are required. Also not supported by Delphi XE Starter Edition are the Design Projects, the Profiling or Unit Test support, and the Web Documents."
bulletViewer Angus notes that TChart and TWebBrowser VCLs are two that he needs and are not included in XE Starter.  It seems to me that TWebBrowser could be transferred from an earlier Delphi version installed on your system.    D7 and DXE seem to co-exist fine here.
bulletPrefer Delphi 7 Help?   One viewer does not like the new XE Help format and asked about continuing to use the Delphi 7 Help files under XE.  Delphi ".hlp" files are rendered by the Microsoft program "WinHlp32.exe" which is downloadable from Microsoft if it does not exist on your system.   D7 Help access under XE can be added to the Tools/Configure/Add menu with a setup similar to this screenshot from my system:





Debugging:  Viewing Local Variables:  Hovering over a local variable in D7 will display it's value which is much quicker than adding it to the watch list for "one-off" checking.  Hover viewing is apparently not supported in XE.  One alternative, the Local Variables Debug window, is one of those omitted in XE Starter edition.  This aggravation is made worse because I have not yet found how to make my desktop layout stick, so the Watch window disappears each time I execute the program.    



bulletUnicode problems:  Unicode is a text encoding system which allows more than the 256 character possible in ANSI string types that only allow one byte per character.  The default in XE is two bytes per character Unicode which cause a problem for any older program that writes string to file streams or otherwise assumes one byte per character.

 For streams, the "old" technique was to write an integer to the stream specifying the length of the stream in bytes, followed by that many bytes representing the string.  At retrieval time, programs read the integer representing length, set the length of the to that value and then read that many characters into the buffer defined by string[1].  The new method will be to write both the number of characters and the number of bytes per character to the stream. The number of string bytes write and read back will be the product of these two numbers.    For program with existing stream files that should remain usable under XE, the strings can moved to a local variable defined as type ANSIstring before writing and set back to the default string type after reading them back in.  (see LPDemo for an example).


bulletA tougher problem was figuring out how to convert a 2 byte  character in a Unicode string back to the actual Extended ASCII code.  Here's the situation I encountered in converting our TDIC dictionary class for XE.  My dictionary encoding uses one byte pre-pended to a string containing the letters which changed from the previous word in the dictionary.  In addition to the word type (abbreviation, foreign, and capitalized bits) it has the high order bit on to indicate compressed format and the number of letters to retain from the preceding word in the low order 4 bits. So code 86, for example, says to concatenate 6 letters from the preceding with the letters in this word.   However, when 86 is read into a Unicode string from the dictionary file, the "improved" handling converts this to "2020" which happens to look like 2 space characters.  The old code could use the "ord" function to extract the number of letters (e.g. n:=ord(words[i][1]) and $0F).  Ord applies only to the low order byte of the 2 byte code and returns value 2 instead of the correct code 6.   After a day of playing with ways to get around this problem, I came up with the following code:
bulletvar sstr:Shortstring;
n:=ord(sstr[1]) and $0F;

This works with Unicode 2 byte characters, apparently because the ShortString or ANSIString typecast is smart enough to decode the 2 bytes codes back into their 1 byte equivalent. 



  [Feedback]   [Newsletters (subscribe/view)] [About me]
Copyright © 2000-2018, Gary Darby    All rights reserved.