ja doch ich hab euch von anfang verstanden, ich weiss nur nicht wie ich das mit nem array umschreiben kann, mir faellt halt dann nur eine zaehlschleife ein, aber da geht er doch dann auch in meinem fall 5 x durch die ordner oder nich? koennt ihr mir an nem beispiel quelltext zeigen wie ihr das machen wuerdet??
[edit]
so wuerde ich eure idee umsetzen: (was leider auch nicht funzt, weil ich bestimmt noch fehler drin hab)
Delphi-Quellcode:
procedure GetFilesInDirectory(Directory: String; const Mask: Array of String;
List: TStringDictionary;
WithSubDirs, ClearList: Boolean);
procedure ScanDir(const Directory: String);
var
SR: TSearchRec;
i:integer;
begin
for i:=1 to 5 do
begin
if FindFirst(Directory + Mask[i], faAnyFile - faDirectory, SR) = 0 then try
repeat
List.Add(SR.Name,nil);
until FindNext(SR) <> 0;
finally
FindClose(SR);
end;
if WithSubDirs then begin
if FindFirst(Directory + '*.*', faAnyFile, SR) = 0 then try
repeat
if ((SR.attr and faDirectory) = faDirectory) and
(SR.Name <> '.') and (SR.Name <> '..') then
ScanDir(Directory + SR.Name + '\');
until FindNext(SR) <> 0;
finally
FindClose(SR);
end;
end;
end;
end;
begin
if ClearList then
List.Clear;
if Directory = '' then Exit;
ScanDir(IncludeTrailingPathDelimiter(Directory));
end;
....
procedure TForm1.BtnSearchPicClick(Sender: TObject); //zum finden der Bilder in Ordner
var direct:string;
PicEnds: array[1..5] of string;
begin
direct:=EdpathP.Text;
hashpic:=TStringDictionary.Create;
PicEnds[1]:='*.jpg';
PicEnds[2]:='*.png';
PicEnds[3]:='*.pdf';
PicEnds[4]:='*.bmp';
PicEnds[5]:='*.gif';
if not (EdpathP.Text='') then GetFilesInDirectory(direct,picends,hashpic,true,true)
else ShowMessage('Please, insert the directory paths first!');
LbPic.Caption:=inttostr(hashpic.TotalCount);
end;