Hehe, da hatten wir wohl beide den selben Gedanken. Wobei explode() eher eine PHP-Funktion ist als Delphi ^^ Aber sinngemäß hab ich das jetzt so umgesetzt und scheint zu funktionieren:
Delphi-Quellcode:
uses Masks;
function MatchesFilter(const AFilename, AFilter: String): Boolean;
var
I: Integer;
SL: TStringList;
S: String;
begin
result:= FALSE;
SL:= TStringList.Create;
try
SL.Text:= StringReplace(AFilter, '|', #13#10, [rfReplaceAll]);
for I:= 0 to SL.Count - 1 do begin
if I mod 2 <> 0 then begin
S:= S + SL[I] + ';';
end;
end;
SL.Text:= StringReplace(S, ';', #13#10, [rfReplaceAll]);
for I:= 0 to SL.Count - 1 do begin
if MatchesMask(AFilename, SL[I]) then begin
result:= TRUE;
Exit;
end;
end;
finally
SL.Free;
end;
end;
Ich sag mal so: Es ist vielleicht nicht besonders elegant oder effizient. Eine dedizierte
API-Funktion oder
VCL-Funktion wär mir auch lieber gewesen. Aber unterm Strich zählt erstmal das Ergebnis.