---------------------------------------------------------------
     History
---------------------------------------------------------------
                                    Legend:
                                     (+) - new feature
                                     (-) - bugfix
                                     (^) - improvement

 v. 1.189 2024.06.23
 -=- (-) Fix OP_ANY_ML does not need to check for paired-linebreaks. Allow it to
  be used in simple loops. By Martin Friebe

 v. 1.188 2024.05.28
 -=- (-) Fix backward search issues (visible in CudaText app). By Alexey Torgashin.
 -=- (^) ExecPos param AOffset default changed from 1 to 0.

 v. 1.187 2024.04.17
 -=- (^) Return compatability with Delphi 7; add test for Delphi 7. By @ThomasKalten.

 v. 1.186 2024.01.10
 -=- (^) Fixes and improvements for look-around:
     (?=.(capt).)?.*\1 optional look-around was handled incorrectly if it contained code that was later referred.
     (?=...)?+ possessive modifiers on look-around were not handled at all.
 -=- (^) Tiny optimization for speed.
 -=- (-) Fix back-refs if they are nested in the group to which they refer (e.g. \1 in group 1).
  By Martin Friebe.

 v. 1.182 2023.11.26
 -=- (+) Support \K.
 -=- (+) Support possessive complex braces: (...){}+.
 -=- (^) Some small optimizations.
 -=- (-) Bugfixes for look-around.
  By Martin Friebe.
 
 v. 1.173 2023.11.11
 -=- (+) Allow loops (*/+/{}) on potentially zero-len patterns.
 -=- (-) Fixed uninitialized result in Dump().
  By Martin Friebe.

 v. 1.169 2023.09.16
 -=- (^) Removed limit to "Max number of groups" (RegexMaxGroups).
 -=- (-) Fixed recursive sub calls. Sub call could return to early.
  By Martin Friebe.

 v. 1.167 2023.09.13
 -=- (+) Added Exec(AOffset, AMatchMustStartBefore: integer).
  Limit the search for the first matched position to AMatchMustStartBefore.
 -=- (+) Added named group syntax: (?<name>regex).
 -=- (+) Added named group reference/call syntax with \g and \k.
 -=- (^) Allow underscore in named group name.
 -=- (-) Fixed recursive calls accessing outer captures.
 -=- (^) Improved speed by reducing clean-up before each match execution.
 -=- (-) Fixed literal brace "{" after quantifier.
  By Martin Friebe.

 v. 1.165 2023.09.08
 -=- (+) Added support for \R (any unicode line break).
  By Alexey Torgashin.

 v. 1.163 2023.08.24
 -=- (+) Added full look-ahead support. Added full fixed length look-behind
  support.Added limited variable length look-behind support.
 -=- (+) Added (?modifier:pattern) support.
 -=- (+) Added "property AllowBraceWithoutMin" to allow {,2} instead of {0,2}.
 -=- (+) Added "property AllowLiteralBraceWithoutRange" to allow "{" to be
  matched as literal, if no range follows.
  By Martin Friebe.

 v. 1.162 2023.08.21
 -=- (-) Fix nested loops using OP_LOOP. Outer loops were run with the counter
  of the inner loop.
 -=- (^) Removed limit "LoopStackMax = 10" for nested loops (OP_LOOP)
 -=- (^) Added indent for RegEx.Dump()
 -=- (^) Detect fixed length for in branches, if all paths are of equal length.
 -=- (^) Optimization, detect more anchors: ^ \G $ .*
  By Martin Friebe.

 v. 1.161 2023.08.17
 -=- (-) Fix atomic groups. Allow backtracking the entire group.
  Make '*','+',... operators aware of the atomic behaviour. Allow nesting.
  By Martin Friebe.

 v. 1.160 2023.08.15
 -=- (+) Add \G for ExecNext to match the position where the previous match ended.
  Or in Exec(AOffset) match the AOffset position
  By Martin Friebe and Alexey Torgashin.
 -=- (+) Add SetInputSubString(Text, Start, Len)
  to only match within the selected substring.
  By Martin Friebe and Alexey Torgashin.

 v. 1.158 2022.05.30
 -=- (-) Fix Substitute() result when 'subroutine' (?1) is used.
 -=- (-) Fix work of recursion (?R) with back-references.
  Reported by Konstantin Vlasov, fixed by Alexey Torgashin.

 v. 1.156 2022.05.04
 -=- (^) Compatability with Delphi 2007 (maybe D2005 too); fixed compiler warnings.
 -=- (^) Renamed compiler define 'Unicode' to 'UnicodeRE' since 'Unicode'
  is used by Delphi.
 -=- (-) Fixed declaration of PtrInt for Delphi 6 and 7.
  By Thomas Mueller (@dummzeuch) and Alexey Torgashin.

 v. 1.155 2022.04.28
 -=- (-) Fix Substitute() result for not-real group index like '$9' in regex '(b)'.
  By Alexey Torgashin.
 -=- (-) Fix UnQuoteChar() range check for Substitute() call.
  By @delphicz and Alexey T.

 v. 1.153 2021.07.04
 -=- (^) Compatability with Delphi 7. By Alexey Torgashin.

 v. 1.152 2021.05.26
 -=- (-) Fix match empty strings (e.g. by '^$'). By Alexey Torgashin.

 v. 1.151 2021.03.24
 -=- (-) Fix for Substitute method and named groups. By @chrisgch.

 v. 1.150 2021.02.08
 -=- (-) Setters of Modifier* properties now invalidate the opcode.

 v. 1.149 2021.01.08
 -=- (-) Allow underscore char to be escaped '\_'. Other word-chars are
 not allowed. By Alexey Torgashin.

 v. 1.148 2020.09.29
 -=- (-) Fixed broken ^ and $ if UseLinePairedBreak=False.
  By Alexey Torgashin.

 v. 1.147 2020.09.13
 -=- (+) Added support for negative lookbehind: (?<!foo)bar.
 -=- (^) Added IsFixedLength() to detect regex with fixed length match.
 -=- (^) Added IsCompiled().
  By Alexey Torgashin.

 v. 1.144 2020.09.02
 -=- (^) Rework handling of paired CR LF: simplified code, removed
  prop LinePairedSeparator (str), added prop UseLinePairedBreak (bool),
  it works faster.
 -=- (^) Removed prop ReplaceLineBreakFromOS, added instead ReplaceLineBreak.
 -=- (+) Added global vars: RegExprUsePairedBreak, RegExprReplaceLineBreak.
 -=- (+) Added global vars: RegExprLookaheadIsAtomic, RegExprLookbehindIsAtomic.
  By Alexey Torgashin.

 v. 1.138 2020.09.01
 -=- (+) Added \z which matches at the very ending. \Z is changed: it matches
  _also_ before the final line-break. Like in major engines.
 -=- (^) Remove ifdef UnicodeWordDetection, because it needs code which
  is compiler specific (FPC/Delphi) and hard to support. Unicode is supported
  better with existing ifdef FastUnicodeData.
  By Alexey Torgashin.

 v. 1.130 2020.08.31
 -=- (+) Support Perl syntax for named groups: (?'name'expr) and
  subroutine calls via (?&name).
 -=- (^) Added compile error code for unknown meta-chars (like \X \E \z).
  By Alexey Torgashin.

 v. 1.128 2020.08.31
 -=- (+) Added recursion: (?R) with alias (?0).
 -=- (+) Added subroutine calls: (?1) ... (?80), and for named groups: (?P>name).
 -=- (+) Added possessive quantifier: a++, a*+, a?+, a{n,m}+ for simple braces.
  Not for complex braces yet: (expr){n,m}+.
  By Alexey Torgashin.

 v. 1.116 2020.08.26
 -=- (+) Added ifdef UnicodeEx, to support unicode chars >0xFFFF, e.g.
  emojis. Because '.', '\W', '\S' etc must catch 2 WideChars of 1 emoji.
 -=- (^) Added ifdef UseLineSep, to enable LineSeparators property.
  When turned off (default) it makes Unicode mode faster matching ".".
  By Alexey Torgashin.

 v. 1.111 2020.08.24
 -=- (+) Support atomic groups: (?>...).
 -=- (+) Support negative lookahead: aa(?!bb).
 -=- (^) Add compile error code for unsupported char after '?' in (?...)
  By Alexey Torgashin.

 v. 1.106 2020.08.18
 -=- (+) Support Unicode categories: \pL \p{L} \p{Lu}, and negative
  variant with \P. Both inside char-classes and outside them.
  Allowed categories: https://www.compart.com/en/unicode/category/
  Requires define FastUnicodeData.
  By Alexey Torgashin.

 v. 1.101 2020.08.05
 -=- (+) Support named groups like in Python: (?P<name>regex), and back-refs
  to named groups: (?P=name).
 -=- (+) Public method MatchIndexFromName
 -=- (+) Public method MatchFromName
 -=- (+) Support positive lookahead: foo(?=bar)
 -=- (+) Support positive lookbehind: (?<=foo)bar
 -=- (+) Support Substitute with named groups: ${name}
  Added tests.
  By Alexey Torgashin.

 v. 0.995 2020.06.21
 -=- (^) Deleted prop InvertCase and global variable for this purpose,
 seems no one needs it anymore. By Alexey Torgashin.

 v. 0.994 2020.06.11
 -=- (+) Added define FastUnicodeData, which uses additional arrays
  (size=320K) to speedup unicode functions in Unicode mode.
  Added unit regexpr_unicodedata.
  By Alexey Torgashin.

 v. 0.993 2020.06.08
 -=- (-) Fixed crash in Substitute() if template str is just '$'.
  By Alexey Torgashin.

 v. 0.992 2020.06.01
 -=- (+) Added backward search possibility: ABackward param in
  ExecPrim, ExecPos, ExecNext. It was tested in CudaText editor.
  By Alexey Torgashin.

 v. 0.991 2020.05.15
 -=- (-) Fixed incorrect opcode for correct regex "[.-]".
  By Alexey Torgashin.

 v. 0.990 2020.05.11
 -=- (-) Fixed finding some count of simple chars, e.g. "a+", "a{2,5}".
 -=- (-) Fixed PtrInt type for Delphi, should be NativeInt.
  By Alexey Torgashin.

 v. 0.989 2020.03.26
 -=- (-) Fixed compilation on D2009

 v. 0.988 2020.02.15
 -=- (^) Don't raise error "empty input string", it breaks some apps.
  By Alexey Torgashin.

 v. 0.987 2020.01.09
 -=- (+) Added property SlowChecksSizeMax. Slow checks are used only
  in Exec(), and not in Exec(AOffset), ExecPos(), ExecNext.
 -=- (^) Fixed big slowdown in Exec/ExecPos (call of IsProgrammOk),
  which affected test_benchmark a lot. By Alexey Torgashin.
 -=- (^) Raise error if incorrect {} braces were found in expression.
  By Alexey Torgashin.
 -=- (^) Optimize opcode for [a-c] ranges: avoid redundant EXACTLY.
  By Alexey Torgashin.
 -=- (^) Added test_benchmark (for FreePascal). Taken from Lazarus forum.

 v. 0.975 2019.12.25
 -=- (^) Better support NULL chars in InputString.
 -=- (^) Improved opcode for EXACTLY: store length to opcode. 15 years old
  ToDo item. By Alexey Torgashin.

 v. 0.973 2019.12.23
 -=- (+) Added ExecPos(AOffset, ATryOnce) - new param ATryOnce is to try
  matching at AOffset, without advancing to next positions. Useful for syntax
  parsers like in CudaText. By Alexey Torgashin.
 -=- (+) Added demo test_dlg to show Dump() result.
 -=- (+) Added demo test_dlg_speed which shows goodness of ExecPos(..ATryOnce).
 -=- (+) Restored work of FirstCharSet optimization (adapted to new opcode).
  Now define UseFirstCharSet is on by default and works in Unicode mode too!
  By Alexey Torgashin.
 -=- (^) Fixed Dump() for new opcode in char classes.

 v. 0.967 2019.12.18
 -=- (+) Reworked opcode for char-classes [], now opcode is stored as pairs
  (Kind,Data), which allows to have null-char in char-classes, and have
  meta-classes \W \D \S \V \H in char-classes. By Alexey Torgashin.

 v. 0.964 2019.12.12
 -=- (^) Add define UseWordChars (off by default): allows property WordChars.
 -=- (^) Add define UseSpaceChars (off by default): allows property SpaceChars.
  By Alexey Torgashin.

 v. 0.962 2019.12.08
 -=- (^) Ifdef UnicodeWordDetection works also on Delphi 2009+.
  By Alexey Torgashin.
 -=- (^) Property UseUnicodeWordDetection default changed to True.
 -=- (^) In Unicode mode on Delphi 2009+, UnicodeString type is used.
 -=- (^) Formatted regexpr.pas using Embarcadero Delphi Formatter.exe.

 v. 0.960 2019.12.03
 -=- (+) Support \V, \H (counterparts to \v, \h). By Alexey Torgashin.
 -=- (+) Support control escape sequences \cA...\cZ. By Alexey Torgashin.
 -=- (+) Expression can contain NULL chars. By Alexey Torgashin.

 v. 0.957 2019.11.23
 -=- (+) InputString can contain NULL chars. By Alexey Torgashin.
 -=- (^) Rework UpperCase/LowerCase/InvertCase for FPC+Delphi.
  By Alexey Torgashin.

 v. 0.955 2019.11.20
 -=- (+) Support meta chars \v (vertical white space), \h (horizontal
  white space). By Alexey Torgashin.

 v. 0.954 2019.11.14
 -=- (^) Changed type of InputString, Expression from PChar to string.
  By Alexey Torgashin.
 -=- (+) Support non-capturing groups (?:...). By Alexey Torgashin.

 v. 0.952 2004.01.11
 -=- (+) FreePascal support, thanks to Yaroslav Romanchenko (SAGE)

 v. 0.951 2002.09.29
 -=- (+) Defined constant EscChar ('\' by default). Can be usefull for
  C++ Builder users who are tired with r.e. like '\\w+\\\\\\w+\\.\\w+'.
  Now they can define for example EscChar='/' and write '/w+\/w+/./w+' -
  sligtly unusual but more readable.. Suggested by unonimous CPPB user.
 -=- (+) Overloaded versions of Exec (only for Delphi 5 and higher).
 -=- (-) ExecNext in some cases didn't raise exception if called after
  unsuccessful exec*, that is wrong (ExecNext must be called ONLY after
  successful Exec* ). Bug reported by Craig A. Peterson
 -=- (+) ReplaceEx and overloaded version of Replace - for
  complex, context-sensitive replacements. Implemented by Thor Asmund.
 -=- (+) Use StrLCopy instead of StpPCopy - in SetExpression() as 0.927
  did in SetInputString(). Fixed by Maley, Scott D.
 -=- (-) Bug in HyperLinkDecorator.DecorateURLs.
 -=- (-) Delphi 2 compatibility restored.
 -=- (^) Delphi 7 compatibility tested, Ok.
 -=- (+) New demos.
 -=- (^) Documentation and distribution package were reorganized.

 v. 0.948 2002.01.03
 -=- (-) back-offset calculation in UniCode version due to
  Delphi's PWideChar subtraction 'feature' (produced
  Integer overflow (if Overflow checking is on) and,
  sometimes, wrong operation), bug reported by Craig A. Peterson
 -=- (-) Bug that was found by Lars Karlslund was fixed by Martin Fuller
  (in addition Martin made some excellent source code optimizations).
  The bug was: "If I do '(something|^$)' on '' I get false (which is
  wrong ...).". Fixed ExecPrim (empty strings were not allowed to pass
  thru in UseFirstCharSet mode) and FillFirstCharSet (many bugs).
 -=- (-) Visualization bug in Dump method. Fixed by Martin Fuller.

 v. 0.947 2001.10.03
 -=- (+) Word boundary (\b & \B) metachar
 -=- (-) Bug in processing predefined char.classes in non-UseSetOfChar mode
 -=- (+) Spanish help - translated by Diego Calp (mail@diegocalp.com), Argentina
 -=- (+) VersionMajor/Minor class method of TRegExpr ;)
 -=- (-) Bug in CompileRegExpr, Thanks to Oleg Orlov <orlov@diasoft.ru>
 -=- (^) Method RegExprSubExpressions wasn't compatible with D2-D3.
  Thanks to Eugene Tarasov for bug report.
 -=- (+) Method Replace can now do substitution as well (see documentation)
  Thanks to Warren Bare, Ken Friesen and many others who suggested it.
 -=- (+) Updated ReplaceRegExpr to use new Replace method functionality
 -=- (^) Restored UniCode compatibility lost in some previous version
  Thanks to Stephan Klimek for bug report
 -=- (^) Updated TestRE project, new examples for Replace with substitution
  included.

 v. 0.942+ 2001.03.01
 -=- (+) Published French help for TRegExpr,
  translated by Martin Ledoux

 v. 0.942 2001.02.12
 -=- (-) Range-check error in DEMO-project (due to bug in
  RegExprSubExpressions), Thanks to Juergen Schroth
 -=- (^) RegExprSubExpressions - added error codes for "unclosed "[" error
 -=- (^) Help file bug fixing

 v. 0.941 2001.02.01
 -=- (^) Attension! Behaviour of '\w', '\W' was changed! Now it really
  match alphanum characters and '_' as described in documentation,
  not only alpha as it was before. Thanks to Vadim Alexandrov.
  If You want to restore previous behaviour, reassign
  RegExprWordChars (exclude '0123456789' from it).
 -=- (+) Full compatible with recommended at unicode.org implementation
  of modifier /m, including DOS-styled line separators (\r\n) mixed
  with Unix styled (\n) - see properties LineSeparators, LinePairedSeparator
 -=- (^) Attension! Behaviour of '.' was changed! Now if modifier /s is off
  it doesn't match all chars from LineSeparators and LinePairedSeparator (by
  default \r and \n)
 -=- (^) Attension! To prevent unneeded recompilation of r.e., now assignment
  to Expression or changing modifiers doesn't cause immidiate [re]compilation.
  So, now You don't get exception while assigning wrong expression, but can
  get exception while calling Exec[Next], Substitute, Dump, etc if there
  are errors in Expression or other properties.
 -=- (+) Non-greedy style iterators (like '*?'), modifier /g.
  Implemented with help from Matthew Winter and Filip Jirsбk
 -=- (+) /x modifier (eXtended syntax - allow formating r.e., see description
  in the help)
 -=- (+) Procedure Compile to [re]compile r.e. Usefull for GUI r.e. editors
  and so on (to check all properties validity).
 -=- (+) FAQ in documentation. I am too lazy to answer to the same
  questions again and again :( Please, read the FAQ before sending
  question to me!
 -=- (^) DEMO project have been significantly improved. Now this is the
  real r.e. debugger! Thanks to Jon Smith for his ideas.
 -=- (+) function RegExprSubExpressions, usefull for GUI editors of
  r.e. (see example of using in TestRExp.dpr project)
 -=- (+) HyperLinkDecorator unit - practical example of TRegExpr
  using (see description in the help file)
 -=- (-) Range checking error in some cases if ComplexBraces defined
  Thanks to Juergen Schroth
 -=- (^) 'ComplexBraces' now is defined by default
 -=- (+) Kit Eason sent to me many examples for 'Syntax' help section
  and I decided to complitely rewrite this section. I hope, You'll enjoy
  the results ;)
 -=- (+) The \A and \Z metacharacters are just like "^" and "$", except
  that they won't match multiple times when the modifier /m is used

 v. 0.939 2000.10.04
 -=- (-) Bug in Substitute method ($10.. didn't work properly)
 Thanks to Serge S Klochkovski

 v. 0.938 2000.07.23
 -=- (^) Exeptions now jump to appropriate source line, not
     to Error procedure (I am not quite sure this is safe for
     all compiler versions. You can turn it off - remove
     reRealExceptionAddr definition below).
 -=- (^) Forgotten BSUBEXP[CI] in FillFirstCharSet caused
     exeption 'memory corruption' in case if back reference can
     be first op, like this: (a)*\1 (first subexpression can be
     skipped and we'll start matching with back reference..).

 v. 0.937 2000.06.12
 -=- (-) Bug in optimization engine (since v.0.934). In some cases
     TRegExpr didn't catch right strings.
     Thanks to Matthias Fichtner

 v. 0.936 2000.04.22
 -=- (+) Back references, like <font size=(['"]?)(\d+)\1>, see
     manual for details
 -=- (+) Wide hex char support, like '\x{263a}'

 v. 0.935 2000.04.19 (by Yury Finkel)
 -=- (-) fInvertCase now isn't readonly ;)
 -=- (-) UniCode mode compiling errors

 v. 0.934 2000.04.17
 -=- (^) New ranges implementation (range matching now is very fast
      - uses one(!) CPU instruction)
 -=- (^) Internal p-code structure converted into 32-bits - works
      faster and now there is no 64K limit for compiled r.e.
 -=- (^) '{m,n}' now use 32-bits arguments (up to 2147483646) - specially
      for Dmitry Veprintsev ;)
 -=- (^) Ranges now support metachars: [\n-\x0D] -> #10,#11,#12,#13;
     Changed '-' processing, now it's like in Perl:
     [\d-t] -> '0'..'9','-','t'; []-a] -> ']'..'a'
 -=- (-) Bug with \t and etc macro (they worked only in ranges)
     Thanks to Yury Finkel
 -=- (^) Added new preprocessing optimization (see FirstCharSet).
      Incredible fast (!). But be carefull it isn's properly tested.
      You can switch it Off - remove UseFirstCharSet definition.
 -=- (^) Many other speed optimizations
 -=- (-) Case-insensitive mode now support system-defined national
      charset (due to bug in v.0.90 .. 0.926 supported only english one)
 -=- (^) Case-insensitive mode implemented with InvertCase (param &
      result of REChar type) - works 10 .. 100 times faster.
 -=- (^) Match and ExecNext interfaces optimized, added IsProgrammOk
      by Ralf Junker
 -=- (^) Increased NSUBEXP (now 15) and fixed code for this, now you
      can simply increase NSUBEXP constant by yourself.
      Suggested by Alexander V. Akimov.
 -=- (^+) Substitute adapted for NSUBEXP > 10 and significant (!)
      optimized, improved error checking.
      ATTENTION! Read new Substitute description - syntax was changed !
 -=- (+) SpaceChars & WordChars property - now you may change chars
      treated as \s & \w. By defauled assigned RegExprSpaceChars/WordChars
 -=- (+) Now \s and \w supported in ranges
 -=- (-) Infinite loop if end of range=#$FF
      Thanks to Andrey Kolegov
 -=- (+) Function QuoteRegExprMetaChars (see description)
 -=- (+) UniCode support - sorry, works VERY slow (remove '.' from
     {.$DEFINE UniCode} after this comment for unicode version).
     Implemented by Yury Finkel

 v. 0.926 2000.02.26
 -=- (-) Old bug derived from H.Spencer sources - SPSTART was
     set for '?' and '*' instead of '*', '{m,n}' and '+'.
 -=- (-^) Now {m,n} works like Perl's one - error occures only
     if m > n or n > BracesMax (BracesMax = 255 in this version).
     In other cases (no m or nondigit symbols in m or n values,
     or no '}') symbol '{' will be compiled as literal.
     Note: so, you must include m value (use {0,n} instead of {,n}).
     Note: {m,} will be compiled as {m,BracesMax}.
 -=- (-^) CaseInsensitive mode now support ranges
     '(?i)[a]' == '[aA]'
 -=- (^) Roman-number template in TestRExp ;)
 -=- (+^) Beta version of complex-braces - like ((abc){1,2}|d){3}
     By default its turned off. If you want take part in beta-testing,
     please, remove '.' from {.$DEFINE ComplexBraces} below this comments.
 -=- (-^) Removed \b metachar (in Perl it isn't BS as in my implementation,
     but word bound)
 -=- (+) Add /s modifier. Bu I am not sure that it's ok for Windows.
     I implemented it as [^\n] for '.' metachar in non-/s mode.
     But lines separated by \n\r in windows. I need you suggestions !
 -=- (^) Sorry, but I had to rename Modifiers to ModifierStr
     (ModifierS uses for /s now)

 v. 0.91 2000.02.02
 -=- (^) some changes in documentation and demo-project.

 v. 0.90 2000.01.31
 -=- (+) implemented braces repetitions {min,max}.
     Sorry - only simple cases now - like '\d{2,3}'
     or '[a-z1-9]{,7}', but not (abc){2,3} ..
     I still too short in time.
     Wait for future versions of TRegExpr or
     implement it by youself and share with me ;)
 -=- (+) implemented case-insensitive modifier and way
     to work with other modifiers - see properties
     Modifiers, Modifier, ModifierI
     and (?ismx-ismx) Perl extension.
     You may use global variables RegExpr* for assigning
     default modifier values.
 -=- (+) property ExtSyntaxEnabled changed to 'r'-modifier
     (russian extensions - see documentation)
 -=- (+) implemented (?#comment) Perl extension - very hard
     and usefull work ;)
 -=- (^) property MatchCount renamed to SubExprMatchCount.
     Sorry for any inconvenients, but it's because new
     version works slightly different and if you used
     MatchCount in your programms you have to rethink
     it ! (see comments to this property)
 -=- (+) add InputString property - stores input string
     from last Exec call. You may directly assign values
     to this property for using in ExecPos method.
 -=- (+) add ExecPos method - for working with assigned
     to InputString property. You may use it like this
        InputString := AString;
        ExecPos;
     or this
        InputString := AString;
        ExecPos (AOffset);
     Note: ExecPos without parameter works only in
     Delphi 4 or higher.
 -=- (+) add ExecNext method - simple and fast (!) way to finding
     multiple occurences of r.e. in big input string.
 -=- (^) Offset parameter removed from Exec method, if you
     used it in your programs, please replace all
        Exec (AString, AOffset)
     with combination
        InputString := AString; ExecPos (AOffset)
     Sorry for any inconvenients, but old design
     (see v.0.81) was too ugly :(
     In addition, multiple Exec calls with same input
     string produce fool overhead because each Exec
     reallocate input string buffer.
 -=- (^) optimized implementation of Substitution,
     Replace and Split methods
 -=- (-) fixed minor bug - if r.e. compilation raise error
     during second pass (!!! I think it's impossible
     in really practice), TRegExpr stayed in 'compiled'
     state.
 -=- (-) fixed bug - Dump method didn't check program existance
     and raised 'access violation' if previouse Exec
     was finished with error.
 -=- (+) changed error handling (see functions Error, ErrorMsg,
     LastError, property CompilerErrorPos, type ERegExpr).
 -=- (-^) TRegExpr.Replace, Split and ExecNext made a infinite
     loop in case of r.e. match empty-string.
     Now ExecNext moves by MatchLen if MatchLen <> 0
     and by +1 if MatchLen = 0
     Thanks to Jon Smith and George Tasker for bugreports.
 -=- (-) While playing with null-matchs I discovered, that
     null-match at tail of input string is never found.
     Well, I fixed this, but I am not sure this is safe
     (MatchPos[0]=length(AInputString)+1, MatchLen = 0).
     Any suggetions are very appreciated.
 -=- (^) Demo project and documentation was upgraded
 -=- (^) Documentation and this version was published on my home page


 v. 0.81 1999.12.25 // Merry Christmas ! :)
 -=- added \s (AnySpace) and \S (NotSpace) meta-symbols
     - implemented by Stephan Klimek with minor fixes by AVS
 -=- added \f, \a and \b chars (translates into FF, BEL, BS)
 -=- removed meta-symbols 'ц' & 'Ц' - sorry for any inconvenients
 -=- added Match property (== copy (InputStr, MatchPos [Idx], MatchLen [Idx]))
 -=- added extra parameter Offset to Exec method
     (thanks to Steve Mudford)

 v. 0.7 1999.08.22
 -=- fixed bug - in some cases the r.e. [^...]
     incorrectly processed (as any symbol)
     (thanks to Jan Korycan)
 -=- Some changes and improvements in TestRExp.dpr

 v. 0.6 1999.08.13 // Friday 13 !
 -=- changed header of TRegExpr.Substitute
 -=- added Split, Replace & appropriate
     global wrappers (thanks to Stephan Klimek for suggetions)

 v. 0.5 1999.08.12
 -=- TRegExpr.Substitute routine added
 -=- Some changes and improvements in TestRExp.dpr
 -=- Fixed bug in english version of documentation
     (Thanks to Jon Buckheit)

 v. 0.4 1999.07.20
 -=- Fixed bug with parsing of strings longer then 255 bytes
     (thanks to Guido Muehlwitz)
 -=- Fixed bug in RegMatch - matches only first occurence of r.e.
     (thanks to Stephan Klimek)

 v. 0.3 1999.06.13
 -=- ExecRegExpr function

 v. 0.2 1999.06.10
 -=- packed into object-pascal class
 -=- code slightly rewriten for pascal
 -=- now macro correct proceeded in ranges
 -=- r.e.ranges syntax extended for russian letters ranges:
     а-я - replaced with all small russian letters (Win1251)
     А-Я - replaced with all capital russian letters (Win1251)
     а-Я - replaced with all russian letters (Win1251)
 -=- added macro '\d' (opcode ANYDIGIT) - match any digit
 -=- added macro '\D' (opcode NOTDIGIT) - match not digit
 -=- added macro '\w' (opcode ANYLETTER) - match any english letter or '_'
 -=- added macro '\W' (opcode NOTLETTER) - match not english letter or '_'
 (all r.e.syntax extensions may be turned off by flag ExtSyntax)

 v. 0.1 1999.06.09
 first version, with bugs, without help => must die :(
