Einzelnen Beitrag anzeigen

mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#1

Prüfen ob ein verzeichnis die gewünschte erweiterungen hat ?

  Alt 15. Okt 2006, 14:53
Hallo,
in einem aktuellen Projekt muss ich prüfen ob es in den verzeichnisen bestimmte erweiterungen gibt oder nicht....

ich habe es zurerst so versucht
Delphi-Quellcode:
function GetAnderItem(dir:String;extList:String):Boolean;
var
  sr:TSearchRec;
  ok:Boolean;
begin
  OK := False;
  if FindFirst(Dir+'*.*', $23,SR) = 0 then begin
    repeat
      // Der Eintrag darv kein . oder .. sein und muss in der liste stehen dann ok auf True
      if (sr.Name[1] <> '.') and (pos(UpperCase(ExtractFileExt(sr.name)),extlist) > 0) then begin
        ok:=True;
        result:=ok;
      end;
    until ok or (FindNext(sr) <> 0);
  end;
       GetPreviousDirectory
  if (FindFirst(Dir+'*', faDirectory,SR) = 0) then begin
    repeat
     if (sr.Name[1] <> '.') and ((sr.Attr and faDirectory) = faDirectory) then
     GetAnderItem(dir+sr.name+'\',extlist);
    until FindNext(sr) <> 0;
    FindClose(sr);
  end;
  result:=ok;
// dieser code gibt auch immer nur false zurück
dann habe ich im internet einen code gefunden und ihn angepasst:
Delphi-Quellcode:
function GetFilesInDirectory(ADirectory: string; AMask: String; ARekursiv: Boolean;ok:Boolean = False):Boolean;
var
  SR: TSearchRec;
begin
  ok:=ok;
  if (ADirectory<>'') and (ADirectory[length(ADirectory)]<>'\') then ADirectory:=ADirectory+'\';
  if (FindFirst(ADirectory,faAnyFile-faDirectory,SR)=0) then begin
    repeat
      if (SR.Name[1]<>'.') and ((sr.Attr and faAnyFile) = faAnyFile) and (pos(UpperCase(ExtractFileExt(sr.name)),AMask) > 0)then
        ok:=true;
    until (ok ) or (FindNext(SR)<>0);
    FindClose(SR);
  end;

  if ARekursiv then
    if (FindFirst(ADirectory+'*.*',faDirectory,SR)=0) then
    begin
      repeat
        if SR.Name[1]<>'.then
          GetFilesInDirectory(ADirectory+SR.Name,AMask,True,ok);
      until FindNext(SR)<>0;
      FindClose(SR);
    end;
  result:=ok;
end;
allerding gibt er immer nur false zurück

ich hoffe ihr könnte mir wie meistens weiter helfen.

Vielen dank im vorraus !
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat