Einzelnen Beitrag anzeigen

mimi

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

Re: Prüfen ob ein verzeichnis die gewünschte erweiterungen h

  Alt 16. Okt 2006, 11:42
problem gelöst *G*
ich mache das jetzt so:
Delphi-Quellcode:
procedure GetAllFilesM(Path, Mask: String; List: TStrings;
  SubFolder: Boolean);
var
  Attrib, k: Integer;
  Search: TSearchRec;
begin
  Attrib := faArchive + faReadOnly + faHidden;

  if Path[Length(Path)] <> '\then Path := Path + '\';

  with TStringList.Create do
  try
    QuoteChar:='.';
// CommaText := Mask;
    DelimitedText:= Mask;
    for k := 0 to Count - 1 do
    if FindFirst(Path + Strings[k], Attrib, Search) = 0 then
      repeat
        List.Add(AnsiUpperCase(Path + Search.Name));
      until FindNext(Search) <> 0;

    FindClose(Search);
  finally Free end;

  if SubFolder then
  begin
    if FindFirst(Path + '*.*', faDirectory, Search) = 0 then
    begin
      repeat
        if ((Search.Attr and faDirectory) = faDirectory) and
          (Search.Name[1] <> '.') then
          GetAllFilesM(Path + Search.Name, Mask, List, SubFolder);
      until FindNext(Search) <> 0;

      FindClose(Search);
    end;
  end;
end; {Popov}

function GetFilesInDirectory(ADirectory: string; AMask: String; ARekursiv: Boolean):Boolean;
var
  extList:TStringList;
begin
  extList:=TStringList.Create;
  AMask:=StringReplace(aMask,'.',',*.',[rfReplaceAll   ]);
  Delete(amask,1,1);

// Amask
  GetAllFilesM(ADirectory,amask,extlist,ARekursiv);
// ShowMessage(extlist.text);

 if extlist.count > 0 then
    result:=true
  else
    result:=False;
end;
die erste procedure stamt vom Delphiforum. Wist ihr vileicht noch wie ich diese procedure optimieren könnte ?
ich glaube mein fehler war: das sich die procedure immer selbst aufgerufen hat. ich glaube folgendes:
er endeckt ein verzeichnis ruft sich slebst auf und kerht zum ersten aufruf zurück und gibt dort natürlich false zurück beim zweiten aufruf wird nämlich true zurückgeben aber das wird aus irgenein grund nicht beachtet. habe ja test gemacht. Naja.... vielen dank für die vorschläge.

Eine frage hätte ich noch zur der TFileListbox variante: wie bekommt man die rekusiv ?
weil das ist ja die einfachste such funktion von allen.
ich müste ja schauen ob es sich um ein verzeichnis oder eine datei handelt. bei einem verzeichnis muss sie sich selsbt aufrufen(auch wenn ich damit in den letzten tagen schlächte erfahrung gemacht habe)
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat