Version 3.0 Changes for C++ Builder 3

Listed here are the changes between version 2.1.1 and version 3.0 of the Regular Expression Component Library for C++ Builder 3. This information also exists in the History file for the component.

Fixes include:

a) The static library version of the component had a link to
the VCL dynamic RTL instead of the VCL static RTL. This
would not usually cause any problem since including the
regular expression header files creates a link to the
correct RTL version and this overrides the link in the
static library version. However, in the case where:

i) The regular expression component was linked to as
part of another package.
ii) The end user of that other package did not use any
components which themselves used the regular
expression component, thus not including the
regular expression component header files.
iii) The end user of that other package built without
Use Packages being chosen.

then the wrong VCL dynamic RTL would be linked. This
problem has been corrected in this version so that both
the static library version of the component and the
header files correctly link in the VCL static RTL when
building a module which does not Use Packages.

b) If an unknown error occurred in The ParseExpression
function, a REG_E_MEMORY error code would be returned,
meaning "out of memory" rather than a REG_E_UNKNOWN
error code. This has been corrected so that an unknown
error returns the REG_E_UNKNOWN code.

c) It was possible for more than one composite
ExpressionOption to be set. The composite expression options
are Normal, Basic, and Extended and are meant to be mutually
exclusive. This has been corrected so that only one of these
can be set at a time.

d) If a copy constructor or assignment operator, or the component
Assign function, was used to copy a regular expression object
to another, the object might not have had its regular expression
automatically re-parsed to reflect the new regular expression
when one of the matching member functions was invoked. This has
now been corrected.

e) If the regular expression was empty, an empty error message
was being returned from the GetExpressionError member function.
This has been corrected to return a "No expression specified"
error message.

f) The appropriate __cdecl calling convention was not being
explicitly set in the regular expression component library
header files. This has been corrected so that if the user
of the library changes the IDE's default calling convention for
any reason, the regular expression component library will still
work correctly.

g) There were extraneous Include and Lib paths in some of the
samples which were incorrect. These have been removed.

Technical additions include: ( See Help file "What's New" topic )

a) Localization of syntax and error messages.

b) ContinueFiles property for stopping a file search on access
errors.

c) GetFindFilesErrors and GetGrepFilesErrors for retrieving any
file access errors searching files.

Further additions include:

a) Version control now exists for all DLLs for better install
and to allow the end user to see what each DLL signifies.

b) Lower level include files are no longer distributed or needed
for the library. These included all of the include files in
the "jm" subdirectory as well as the include files in the main
include directory not starting with RegularExpression.

c) The header files now use the pimpl idiom, which hides
unnecessary private implementation details from the end user.

d) The distribution now automatically installs the VCL components
and the VCL Help file to the C++ Builder 3 IDE.

e) The distribution now comes with separate design time and
run-time components. Only the run-time components need to be
distributed.