Thema: Delphi MatchesMask

Einzelnen Beitrag anzeigen

peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
663 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: MatchesMask

  Alt 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
  Mit Zitat antworten Zitat