Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Anzahl der Files in einem Verzeichnis ermittln (https://www.delphipraxis.net/72217-anzahl-der-files-einem-verzeichnis-ermittln.html)

Christian18 27. Jun 2006 10:20


Anzahl der Files in einem Verzeichnis ermittln
 
Hi,

wie kann man die Anzahl der Dateien in einem bestimmten Verzeichnis ermitteln???

Klaus01 27. Jun 2006 10:32

Re: Anzahl der Files in einem Verzeichnis ermittln
 
Hallo,

auf die Schnelle fällt mir nur das Zählen und findfirst und findnext ein.

Grüße
Klaus

Christian18 27. Jun 2006 10:44

Re: Anzahl der Files in einem Verzeichnis ermittln
 
Hi,

hast du auch ein kleines bsp???

Muetze1 27. Jun 2006 10:46

Re: Anzahl der Files in einem Verzeichnis ermittln
 
In der Hilfe steht ein kleines Beispiel. Zu finden unter FindFirst() und FindNext() sowie FindClose()

Hawkeye219 27. Jun 2006 10:48

Re: Anzahl der Files in einem Verzeichnis ermittln
 
Da war doch mal was: klick

Gruß Hawkeye

Klaus01 27. Jun 2006 10:49

Re: Anzahl der Files in einem Verzeichnis ermittln
 
oder auch hier -> http://www.delphibasics.co.uk/RTL.asp?Name=FindNext

Grüße
Klaus

Christian18 27. Jun 2006 11:17

Re: Anzahl der Files in einem Verzeichnis ermittln
 
mhhhhh...

irgendwie bin ich zu blöd dazu. Ich habe es immernoch nicht geschafft die anzahl der files in einem Verzeichnis zu ermitteln.

MFG Christian18

Klaus01 27. Jun 2006 12:06

Re: Anzahl der Files in einem Verzeichnis ermittln
 
Delphi-Quellcode:
var
  searchResult : TSearchRec;
  i : Integer;
begin
  i:=0;
  // Try to find regular files matching *.* in the current dir
  if FindFirst('*.*', faAnyFile, searchResult) = 0 then
  begin
    repeat

      inc(i);

    until FindNext(searchResult) <> 0;

    // Must free up resources used by these successful finds
    FindClose(searchResult);


  end;
end;

oder mit dem Code von marabu:

Delphi-Quellcode:
// uses QFileCtrls;
function CountFiles(filespec: string): integer;
var
  d: TDirectory;
begin
  d := TDirectory.Create(nil);
  d.BeginUpdate;
  d.FileMask := ExtractFileName(fileSpec);
  d.Location := ExtractFilePath(fileSpec);
  d.FileType := [ftArchive];
  d.EndUpdate;
  Result := d.Count;
  d.Free;
end;
Grüße
Klaus

[edit] showMessage entfernt

Christian18 27. Jun 2006 12:07

Re: Anzahl der Files in einem Verzeichnis ermittln
 
Hallo,

ich habe jetzt doch eine möglichkeit gefunden wie ich die anzahl der files ermitteln kann.

Ich habe es so gemacht:

Delphi-Quellcode:
function TProgramm.GetPath() : String;
  var i : TIniFile;
begin
  try
    i:=TIniFile.Create(ExtractFilePath(Application.ExeName) + 'Setting.ini');
    Result:=i.ReadString('Settings', 'Path', '');
  finally
    i.Free;
  end;
end;

function TProgramm.GetFiles() : String;
  var s : TSearchRec;
      i : Integer;
begin
  if FindFirst(GetPath + '*.*', faAnyFile, s) = 0 then
    begin
      i:=0;
      repeat
        Inc(i);
      until FindNext(s) <> 0;
      Result:=IntToStr(i - 2)
    end;
end;
Bei manchen Verzeichnissen wird aber eine falsche anzahl zurückgegeben. Worann liegt das und warum muss ich die anzahl -2 nehmen, damit die richtige anzahl raus kommt???

Klaus01 27. Jun 2006 12:10

Re: Anzahl der Files in einem Verzeichnis ermittln
 
Delphi-Quellcode:
function TProgramm.GetFiles() : String;
  var s : TSearchRec;
      i : Integer;
begin
  if FindFirst(GetPath + '*.*', faAnyFile, s) = 0 then
    begin
      i:=0; // hier setzt Du die Anzahl auf 0 obwohl schon eine Datei gefunden wurde
      repeat
        Inc(i);
      until FindNext(s) <> 0;
      Result:=IntToStr(i - 2) // weil bei faAnyFile auch . und .. mitgezählt werden
    end;
end;
wenn Du anstelle von faAnyFile faArchive verwendest sollte es korrekt zählen.

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:32 Uhr.
Seite 1 von 2  1 2      

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