AGB  ·  Datenschutz  ·  Impressum  







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

Dateinamen mit einem File Filter vergleichen

Ein Thema von Codehunter · begonnen am 8. Apr 2011 · letzter Beitrag vom 13. Apr 2011
 
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.284 Beiträge
 
Delphi 12 Athens
 
#8

AW: Dateinamen mit einem File Filter vergleichen

  Alt 8. Apr 2011, 11:08
Jepp, vollkommen korrekt Gollum Hab mich nämlich auch gewundert dass mir der Code um die Ohren geflogen ist... Daneben habe ich noch ein paar Failsafes eingebaut für den Fall das lange Dateipfade als Filename übergeben werden (Da scheint MatchesMask allergisch zu sein) und auch für den Fall, dass der Filterstring nicht ganz sauber formuliert ist.

So schauts jetzt aus:
Delphi-Quellcode:
function dwMatchesFilter(const AFilename, AFilter: String): Boolean;
var
  I: Integer;
  SL: TStringList;
  S, FN: String;
begin
  result:= FALSE;
  FN:= ExtractFileName(AFilename);
  SL:= TStringList.Create;
  try
    SL.Text:= StringReplace(Trim(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;
    while Pos(';;', S) > 0 do S:= StringReplace(S, ';;', ';', [rfReplaceAll]);
    SL.Text:= StringReplace(S, ';', #13#10, [rfReplaceAll]);
    for I:= 0 to SL.Count - 1 do begin
      S:= SL[I];
      if MatchesMask(FN, S) then begin
        result:= TRUE;
        Break;
      end;
    end;
  finally
    SL.Free;
  end;
end;
Allerdings passt die praktische Erfahrung hier nicht mit der Delphi-Hilfe zusammen, die bei "Exit" folgendes sagt:
Code:
Exit beschränkt sich nicht auf einen Block, sondern beendet die gesamte Prozedur. Exit beeinflusst die Ablaufsteuerung von try..finally-Blöcken nicht. Wenn Sie Exit in einem try..finally-Konstrukt aufrufen, wird die Ausführung in der finally-Klausel fortgesetzt.
Denn wie man hier sehen kann wird SL.Free im finally nicht aufgerufen obwohl es laut Hilfe so sein sollte.

Geändert von Codehunter ( 8. Apr 2011 um 11:11 Uhr)
  Mit Zitat antworten Zitat
 


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 23:06 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