Hi, you all. At current TMaks.Matches does a case insensitive matching of a filename against a given mask(list). Currently this comparison is case insensitive ('ABC.doc' matches the mask 'abc*').
This is OK for Windows/DOS environments, but it will not do for case sensitive operating systems (or filesystems) like Linux. (This behaviour is probably due to Delphi compatibility?) I would like to extent this so that matching can be done case sensitive as well. (Both Filename and Mask(list) will be treated case sensitive in that case). For Delphi compatibility, this probably should not end up in TMask itself, so I would suggest deriving TMask from TCustomMask, which will have a protected property CaseSensitive, which will be False and not be public for TMask. (And make some overrides for MatchesMask and MatchesMaskList functions) Something like: TCustomMask = class private FMask: TMaskString; FCaseSensitive: Boolean; protected property CaseSensitive: Boolean read FCaseSensitive write FCaseSensitive; public constructor Create(const AValue: String); destructor Destroy; override; function Matches(const AFileName: String): Boolean; end; TMask = class(TCustomMask); end; TExtMask = class(TMask) public property CaseSensitive; end; Any thoughts, ideas, objections (just shoot me) on that? B.t.w. Shouldn't this functionality (Filename matching) be part of the RTL instead of the LCL? (That's why I posted this also in fpc-pascal.) AFAICR there is some extensive mask-matching algorithm in the linux code for findfirst/findnext. If filename-matching code were to be part of the RTL, then that would make code re-usable and easier to maintain. Bart _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal