Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Dateinamen mit einem File Filter vergleichen (https://www.delphipraxis.net/159690-dateinamen-mit-einem-file-filter-vergleichen.html)

Maik81ftl 8. Apr 2011 21:45

AW: Dateinamen mit einem File Filter vergleichen
 
gegenfrage an euch??? würde euch da ggf eine LCL-Routine ausreichen?

Wenn ja schaut mal bitte bei Lazarus-Crr da dies zu 95% mit delphi konform geht, wäre dies doch eine Sinnvolle alternative.

himitsu 9. Apr 2011 07:04

AW: Dateinamen mit einem File Filter vergleichen
 
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
Delphi-Quellcode:
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 :oops:

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.

Codehunter 13. Apr 2011 14:45

AW: Dateinamen mit einem File Filter vergleichen
 
Um jetzt nochmal auf die Frage mit dem Try und dem Exit zurückzukommen:

Ich bin die Sache Step by Step via F8 durchgegangen. In der konkreten Funktion wird Finally tatsächlich NICHT angesprungen, in anderen Routinen meiner Programme bei ähnlicher Konstellation dagegen schon. Ich konnte noch nicht herausfinden wo es im konkreten Fall klemmt. Evtl. ist das auch ein Bug im Linker? Nichtsdestotrotz ist Break die bessere Lösung anstelle von Exit. "Exit(x)" ähnelt mehr dem C-Konstrukt "return x" und wurde von mir bisher nie verwendet. Ich weise immer Result das Ergebnis zu, der Übersicht wegen.

himitsu 13. Apr 2011 14:50

AW: Dateinamen mit einem File Filter vergleichen
 
Zitat:

Zitat von Codehunter (Beitrag 1094859)
"Exit(x)" ähnelt mehr dem C-Konstrukt "return x" und wurde von mir bisher nie verwendet.

Ist in Delphi 5 eh noch nicht vorhanden. :angle2:


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:03 Uhr.
Seite 2 von 2     12   

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