
Search

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.)

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

|
| |
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.)
Omissions
 | From 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 |
|
|
 | From 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."
|
 | Viewer 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. |
 | Prefer 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. |
Incompatibilities
 | Unicode 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). |
 | A 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:
 | var sstr:Shortstring;
...
setlength(SStr,length(words[i]));
sstr:=shortstring(words[i][1]);
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.
. |
.
|