AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

FileExists mit Wildecard-Support

Ein Thema von Bernhard Geyer · begonnen am 31. Jul 2022 · letzter Beitrag vom 1. Aug 2022
Antwort Antwort
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#1

FileExists mit Wildecard-Support

  Alt 31. Jul 2022, 18:06
"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?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.596 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: FileExists mit Wildecard-Support

  Alt 31. Jul 2022, 18:23
TFilesystem.FindMatchingFile aus meiner dzLib:

https://osdn.net/projects/dzlib-tool...zFileUtils.pas

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;
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.048 Beiträge
 
Delphi 12 Athens
 
#3

AW: FileExists mit Wildecard-Support

  Alt 31. Jul 2022, 19:04
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (31. Jul 2022 um 19:32 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: FileExists mit Wildecard-Support

  Alt 1. Aug 2022, 07:58
danke erstmal.

Gerade gefunden das ich schon eine entsprechende Helper-Funktion implementiert hatte.
Scheinbar bei der Suche falschen Suchbegriff genutzt
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz