Difference between revisions of "Masks"
(→Specific Windows Quirks: Predefined TWindowsQuirks) |
|||
Line 86: | Line 86: | ||
|} | |} | ||
− | If no | + | If no TWindowsQuirks parameter is supplied to one of the Windows specific Matches methods or functions, DefaultWindowsQuirks is assumed. |
Revision as of 22:21, 29 October 2021
This page describes the Masks unit as per Lazarus version 2.3
UNDER CONSTRUCTION
Overview
The masks unit provides classes and functions for pattern matching using wildcards, sets/ranges and/or literal characters.
Controlling how the mask is interpreted
TMaskOpcodes
TMaskOpcodes is defined as set of TMaskOpcode.
The TMaskOpcode enumeration type consist of:
Name | Interpretation |
---|---|
mocAnyChar | Treat ? as a wildcard to match exactly one char |
mocAnyCharOrNone | Treat [?] to match any char or the absence of a char |
mocAnyText | Treat * as a wildcard to mach zero or any mumber of chars |
mocRange | treat [a-c] to match either 'a', 'b' or 'c'. '-' is treated as a range indicator. To have a literal '-' in a range, it must be the first character in the range: [-a-c] matches '-', 'a', 'b', or 'c'. |
mocSet | Treat [a-c] to match either 'a', '-' or 'c' |
mocNegateGroup | Treat [!a-c] to not match 'a', 'b', or 'c', but match any other char. Requires mocRange and/or mocSet |
mocEscapeChar | Treat EscapeChar (defaults to '\') to take the next char as a literal, so '\*' is treated as a literal '*'. |
Predefined MaskOpcodes
The masks unit has some predefined MaskOpcodes constants.
Name | Interpretation |
---|---|
AllMaskOpCodes | Self explanatory. |
MaskOpCodesDisableRange | Do not interpret [ as the start of a range or set. |
MaskOpCodesNoEscape | Interpret [?] as a set with a literal question mark instead of 0..1 chars wildcard. Disable escaping. |
DefaultMaskOpCodes | Equals to MaskOpCodesNoEscape. |
If no TMaskOpcodes parameter is supplied to one of the Matches methods or functions, DefaultMaskOpCodes is assumed.
Specific Windows Quirks
Windows mask works in a different mode than regular masks, it has many quirks and corner cases inherited from CP/M, then adapted to DOS (8.3) file names and adapted again for long file names.
TWindowsQuirks is defined as set of TWindowsQuirks. The TWindowsQuirk enumeration type consists of:
Name | Example mask | Interpretation |
---|---|---|
wqAnyExtension | Anything*.* | The filename is not required to have an extension |
wqFilenameEnd | Anything??.abc | The '?' matches 1 or 0 chars (except '.') |
wqExtension3More | Anything.abc | Matches Anything.abc but also Anything.abc* (so '*.pas' also matches with 'file.pas.bak') |
wqEmptyIsAny | Empty string matches anything, so acts like '*' | |
wqAllByExtension | .abc | Is treated as *.abc |
wqNoExtension | Anything*. | Matches Anything* without extension |
TWindowsQuirks can only be used in the Windows specfic classses and functions. The default value for those matching methods is [wqAnyExtension,wqFilenameEnd,wqEmptyIsAny,wqNoExtension]
Predefined TWindowsQuirks
The masks unit has some predefined WindowsQuirks constants.
Name | Interpretation |
---|---|
AllWindowsQuirks | Self explanatory. |
DefaultWindowsQuirks | Do not support wqExtension3More and wqAllByExtension |
If no TWindowsQuirks parameter is supplied to one of the Windows specific Matches methods or functions, DefaultWindowsQuirks is assumed.