Problem mit vielen Dateiendungen

Ich hab hier eine leicht abgewandelte Form einer Suchfunktion aus dem Easy Helper...

Code:
procedure GetFilesInDirectory(Directory: String; List: TStrings);

procedure ScanDir(const Directory: String; List: TStrings);
var
  SR: TSearchRec;
  ext: String;
begin
  if FindFirst(Directory + '*', faAnyFile, SR) = 0 then try
    repeat
      if (SR.Name <> '.') and (SR.Name <> '..') then
      begin
        if (SR.attr and faDirectory) = faDirectory then
          ScanDir(Directory + SR.Name + '\', List)
        else begin
          ext := LowerCase(ExtractFileExt(SR.Name));
          if(ext ='.jpeg')or(ext='.jpg')or(ext='.bmp')or(ext='.gif')or(ext='.emf')or(ext='.wmf')or(ext='.ico') then
            List.Add(Directory + SR.Name)
        end;
      end;
    until FindNext(SR) <> 0;
  finally
    FindClose(SR);
  end;
end;

begin
  List.BeginUpdate;
  try
    List.Clear;
    if Directory = '' then Exit;
    if Directory[Length(Directory)] <> '\' then
      Directory := Directory + '\';
    ScanDir(Directory, List);
  finally
    List.EndUpdate;
  end;
end;
In Zeile 16 werden Dateiendungen überprüft. Da will ich Änderungen vornehmen,allerdings müssen jetzt etwa 30 Dateiendungen überprüft werden und ich will eigentlich nicht alles mit "if..." machen. Wie kann ich das geschickt lösen?
 
Ok,ich habs hinbekommen. Folgendermaßen hab ich das Problem gelöst...

1.) Ich hab mir ein "array of string" mit allen Dateiendungen als globale Konstante definiert.

2,) Ich hab mir eine Funktion geschrieben, die überprüft, ob die Dateiendung (aus Zeile 15) in dem Array vorkommt. Die Funktion sieht so aus:
Code:
function InArray(text:string;strings:array of string):boolean;
var
  i:integer;
begin
result := false;
  For i := 0 to High(Strings) do begin
        If strings[i] = text then
          begin
          result := true;
          exit;
          end
        else
          result := false;
    end;
end;
 

Neue Beiträge

Zurück