![]() |
MatchesMask
Ich möchte im Zusammenhang mit TDirectory.Getfiles und MatchesMask Dateien suchen, die nur aus Ziffern bestehen.
In einem Beitrag hatte ich folgendes gefunden, was aber nicht funktioniert.
Delphi-Quellcode:
'*[0-9]*.*;*.*[0-9]*'
Wie muss ich die Maske definieren, damit ich Dateien finde wie 01234567.890, aber keine beispielsweise mit einem Buchstaben. Alle Dateinamen haben alle 8 Stellen + 3 für Extension. Zusatz: Jetzt habe ich folgendes eingetragen, bin aber nicht sicher, ob das so richtig ist. Wenn ich das interpretiere, muss dann am Anfang ein Ziffer stehen und dann ist alles erlaub. Bei der Extension dann alles und am Ende dann eine Ziffer.
Delphi-Quellcode:
'[0-9]*.*[0-9]'
|
AW: MatchesMask
Zitat:
'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9].[0-9][0-9][0-9]' verwenden, da die Syntax da keinen repeat count kennt. |
AW: MatchesMask
Ich hatte das bisher so gelöst:
Delphi-Quellcode:
Wir würde ich denn deinen Vorschlag einbauen?
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);
Delphi-Quellcode:
regular expression '\d{8}\.\d{3}'
|
AW: MatchesMask
Zitat:
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; |
AW: MatchesMask
Zitat:
|
AW: MatchesMask
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz