![]() |
FileExists mit Wildecard-Support
"Früher" (Delphi 6) hat FileExists Wildcard unterstützt.
Man konnte also suche ob eine Datei ein Pattern unterstützt. Mittlerweile macht es FileExists nicht mehr. Was wäre der (schnellste) Ersatz dafür, denn es schon in Delphi gibt? |
AW: FileExists mit Wildecard-Support
TFilesystem.FindMatchingFile aus meiner dzLib:
![]()
Delphi-Quellcode:
class function TFileSystem.FindMatchingFile(const _Mask: string; out _Filename: string): TMatchingFileResult;
var Sr: TSearchRec; begin Result := mfNotFound; if 0 = FindFirst(_Mask, faAnyFile, Sr) then try repeat if (Sr.Name <> '.') and (Sr.Name <> '..') then begin _Filename := Sr.Name; if (Sr.Attr and SysUtils.faDirectory) <> 0 then Result := mfDirectory else Result := mfFile; Exit; end; until 0 <> FindNext(Sr); finally FindClose(Sr); end; end; |
AW: FileExists mit Wildecard-Support
Delphi-Quellcode:
if TDirectory.GetFiles('C:\Irgendwo', 'abc*.xyz') <> nil then
zumindestens einfach, falls schnell genug. Ansonsten ist das wohl am Schnellsten:
Delphi-Quellcode:
var Dummy: TWIN32FindData;
if Winapi.Windows.FindClose(FindFirstFile('C:\*.ini', Dummy)) then Beep; FileExists hat früher nur FindFirstFile gemacht (oder vielleicht auch damals schon mit CreateFile, aber zumindestens mit anderer Bedingung für den Fallback). Jetzt macht es ein CreateFile ... falls das nicht ging (durch Sharing blockiert), wird zwar immernoch alternativ FindFirstFile gemacht, aber nicht bei einem "ungültigen" Namen, was es mit Wildcard nunmal ist. PS: TFile.Exists macht intern auch nur FileExists, also diesbezüglich keine Änderung. |
AW: FileExists mit Wildecard-Support
danke erstmal.
Gerade gefunden das ich schon eine entsprechende Helper-Funktion implementiert hatte. Scheinbar bei der Suche falschen Suchbegriff genutzt :wall: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:11 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