Registriert seit: 12. Jan 2019
Ort: Hessen
702 Beiträge
Delphi 12 Athens
|
AW: MatchesMask
29. Jul 2019, 15:49
Ich hatte das bisher so gelöst:
Delphi-Quellcode:
FilterPredicate := function(const Path: string; const SearchRec: TSearchRec): Boolean
begin
//wir filtern das Hidden Directory "System Volume Information" raus
if (TFileAttribute.faHidden in TPath.GetAttributes(Path))
or (TFileAttribute.faSystem in TPath.GetAttributes(Path))
then begin
Result := False;
Exit;
end;
//auch keine Index und Indexold auswerten
if (UpperCase(SearchRec.Name) = UpperCase(fNameIDXFile))
or (UpperCase(SearchRec.Name) = UpperCase(fNameIDXFileOld))
then begin
result := False;
Exit;
end;
//es dürfen nur Dateien sein, die nur Ziffern im Dateinamen haben
if not MatchesMask(SearchRec.Name, '[0-9]*.*[0-9]') then begin
result := False;
Exit;
end;
Result := true;
end;
WFiles := TDirectory.GetFiles(DriveDisk, FilterPredicate);
Wir würde ich denn deinen Vorschlag einbauen?
regular expression '\d{8}\.\d{3}'
etwa so (uses system.regularexpressions).
Delphi-Quellcode:
function TForm1.Filter(const Path: string; const SearchRec: TSearchRec):
boolean;
begin
Result := false ;
// log('Path: %s',[path]);
// log( 'Name: %s',[SearchRec.Name]);
if (searchrec.Attr and (faDirectory or faHidden or faSysFile)) = 0 then
result := Tregex.IsMatch(Searchrec.Name, '\d{8}\.\d{3}',[roIgnoreCase, roSingleline]);
end;
Peter Below
|
|
Zitat
|