<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">I turned the define RANGES_AUTOREVERSE into a run time option in  67111d9a30.</div><div>A boolean RangeAutoReverse is True by default. I don't really know when somebody would want to turn it off.</div><div dir="ltr"><br></div><div dir="ltr">I also added constructors and functions for legacy syntax, which means [?] represents a literal '?' and characters cannot be escaped with '\'.</div><div>  constructor CreateLegacy() etc.<br></div><div>That was the syntax used earlier but the default syntax now is improved.</div><div>[?] is a wildcard and means 0 or 1 characters. Remember, '?' alone is 1 character.</div><div><div>[??] means 0,1 or 2 chars. Useful and quite intuitive.</div></div><div>Any character can be escaped with '\' now. For example literal '?' is \?, and literal '*' is \*.</div><div>In the Windows mask syntax that is always disabled for obvious reasons.</div><div><br></div><div>Question is, should the old legacy syntax be used when default constructors and functions are called? Like TMask.Create() etc.</div><div>Then the improved syntax would be supported by constructors having different names.</div><div>Mask syntax has no standards. They have evolved and diversified. How does Delphi's Mask work?</div><div>A positive fact however is that some 99.5% of masks use simple '?' and '*' wildcards and continue to work in any case.</div><div><br></div><div>The TMask syntax can be tweaked in many ways. A set TMaskOpcodesSet can be passed as a parameter to constructors / functions.</div><div>I made constants MaskOpCodesDisableRange which treats all brackets [..] as literal characters</div><div>and MaskOpCodesNoEscape which is the "legacy" syntax explained above.</div><div>The Windows style mask can be tweaked with TWindowsQuirkSet.</div><div><br></div><div>Ideas? Comments?</div><div><br></div><div>Juha</div><div><br></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>