Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: Algorithmen (https://www.delphipraxis.net/28-library-algorithmen/)
-   -   Delphi Ersatz für MatchesMask() (https://www.delphipraxis.net/98711-ersatz-fuer-matchesmask.html)

blackdrake 31. Aug 2007 00:18


Ersatz für MatchesMask()
 
Hallo.

Heute habe ich den Quellcode meines OpenSource Projektes für ältere Delphi Versionen kompatibel gemacht. Dabei bemerkte ich, dass die Unit "Masks" bei Borland Delphi 6 Personal nicht enthalten ist. (Soweit ich das dem Internet entnehmen konnte, gibt es diese jedoch bei der Professional/Enterprise wegen dem enthaltenen Source).

Da mein Programm nur die Funktion "MatchesMask" brauchte, habe ich folgendes verwendet:

Code:
// uses Masks;

function PathMatchSpecA(const pszFileParam, pszSpec: pchar): Bool;
stdcall; external 'shlwapi';

function MatchesMask(const Filename, Mask: string): boolean;
begin
  result := PathMatchSpecA(pchar(Filename), pchar(Mask));
end;
Für die Funktionalität muss "Masks" natürlich ausgebunden oder die Funktion umbenannt werden.

Ich habe irgendwo gelesen, dass PathMatchSpecA 5-6 Mal schneller sein soll, als die Borlandvariante. Außerdem besteht nicht der Bug von Borland mit dem Memory-Leak. Ich habe die DLL-Funktion PathMatchSpecA auf meinem Windows 95 PC erfolgreich getestet.

Gruß
blackdrake

Muetze1 31. Aug 2007 00:22

Re: Ersatz für MatchesMask()
 
Falls dein Quellcode dann noch systemunabhängig sein sollte (also z.B. FPC/Lazarus -> Linux), dann kannst du dir als Alternative auch mal die Routine in meiner XMLLib anschauen. Diese kann auch ordentlich mit mehrfachen ? und * in Kombination umgehen, womit die Borland-Funktion auch in manchen Spezialfällen Probleme hat.

Codewalker 1. Sep 2007 16:29

Re: Ersatz für MatchesMask()
 
Entspricht das nicht in etwa diesem hier: http://www.delphipraxis.net/internal...=644694#644694 ?

blackdrake 1. Sep 2007 16:34

Re: Ersatz für MatchesMask()
 
Weiß nicht. Ist schließlich ein selbst geschriebener Algorithmus. Ich habe jedoch nach einem Ersatz für MatchesMask() gesucht, der sich genau so wie die Borland-Version verhält, damit meine Drittanbieter-VCLs auch noch bei Delphi 6 PE laufen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:12 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