Version 2 Changes

Listed here are the changes and additions between version 1 and version 2 of the Regular Expression Library. This information also exists in the Read Me file for the component.

Additions include:

a) ChangeFiles method for changing files based on regular expression matching.

b) GetChangeFilesErrors method to get back any errors that may have occurred from the ChangeFiles method.

c) Implementation of the TPersistent::Assign method to support VCL based assignment of one regular expression component to another.

d) Implementation of C++ copy constructor to allow a regular expression component to be constructed from another regular expression component.

e) Implementation of C++ asssignment operator to allow a regular expression component to be assigned using another regular expression component.

f) Implementation of C++ equality operator to allow a regular expression component to be compared for equality with another regular expression component.

g) SaveExtension property which is a file extension to use when backing up files during execution of the ChangeFiles method.

h) OnMerging event called whenever a change is about to be made to a string during execution of the Merge method.

i) OnChangingFiles event called whenever a change is about to be made to a file during execution of the ChangeFiles method.

Changes include:

a) The underlying Regex++ library by Dr. John Maddock has been upgraded from release 2.15 to the current 2.23 release.

b) All methods and event which dealt with std::string have had their signatures changed to use the VCL AnsiString instead in order to provide easier integration with the VCL in the VCL component.

c) Event handling signatures have changed to include more information and to encapsulate the information about matches into a single structure called REMatchInfo.

d) On the fly changes in both strings and files are supported by changing the FormatString property during the OnMerging or OnChangingFiles events.

e) The regular expression components are fully re-entrant allowing the creation and use of regular expression objects or the calling of other methods on the current object from event handlers, as well as the use of multi-threading to concurrently access other regular expression objects.