Masks
From Lazarus wiki
Jump to navigationJump to search
This page describes the Masks unit as per Lazarus version 2.5
UNDER CONSTRUCTION
Overview
The masks unit provides methods 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 '*'. |
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 |