
Search

Support DFF
If you shop at Amazon anyway,
consider using this link. We receive a few cents from each purchase.
Thanks.
Support DFF
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.

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." |
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 an ANSI or 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 prepended 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 (or ANSI) 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 typecast is smart enough to decode the 2 bytes codes back into
their 1 byte equivalent.
|
 | .
|
.
|