Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: Dateinamen mit einem File Filter vergleichen

  Alt 9. Apr 2011, 08:04
Delphi-Quellcode:
uses Masks;

function MatchesFilter(const Filename, Filter: String): Boolean;
var
  SL: TStringList;
  i: Integer;
begin
  SL := TStringList.Create;
  try
    SL.StrictDelimiter := True;
    SL.Delimiter := '|';
    SL.DelimitedText := Filter;
    for i := 0 to SL.Count div 2 - 1 do
      SL.Delete(i);
    SL.DelimitedText := ';';
    SL.Text := SL.Text;
    for i := SL.Count - 1 downto 0 do
      if MatchesMask(Filename, SL[i]) then
        Exit(True);
  finally
    SL.Free;
  end;
  Result := False;
end;

// oder um nocheine Zeile kürzer
function MatchesFilter(const Filename, Filter: String): Boolean;
var
  SL: TStringList;
  i: Integer;
begin
  SL := TStringList.Create;
  try
    SL.LineBreak := '|';
    SL.Text := Filter;
    for i := 0 to SL.Count div 2 - 1 do
      SL.Delete(i);
    SL.LineBreak := ';';
    SL.Text := SL.Text;
    for i := SL.Count - 1 downto 0 do
      if MatchesMask(Filename, SL[i]) then
        Exit(True);
  finally
    SL.Free;
  end;
  Result := False;
end;

Statt Exit(True); kann man auch (für ältere Delphis) auf Folgendes ausweichen.
Delphi-Quellcode:
begin
  Result := True;
  Exit;
end;
PS: nicht getestet ... sollte aber gehn

PPS: In der CodeLb sollte von mir eine MaskMatch-Version rumliegen, welche speziell für Dateinamen vorgesehen ist,
denn "*.*" findet eigentlich auch "DateiOhneEndung", was Masks.MatchesMask nicht macht.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 9. Apr 2011 um 08:06 Uhr)
  Mit Zitat antworten Zitat