Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Dateisuche mit Zäheln der durchsuchten Datei-Grössen (https://www.delphipraxis.net/42144-dateisuche-mit-zaeheln-der-durchsuchten-datei-groessen.html)

St.Pauli 14. Mär 2005 15:01


Dateisuche mit Zäheln der durchsuchten Datei-Grössen
 
Hi @ all,

Unten ist ein Teil des Codes. Ziel ist es, dass ich am Ende schreiben kann: "... mit der insgesamten Größe von xxxxx durchsucht"
Aber irgendwie klapp es nicht. Es gibt zwar keinen Fehler beim Comp. doch ich habe es einfach mal auf C:\ getestet, ohne Unterordner, und die Zahl war viel kleiner als die Tatsächliche Größe aller Dateien. Hat jemand einen Plan, was ich falsch gemacht habe???

Delphi-Quellcode:
function GetFileSize(const AFileName: String): Integer;
var
  F: TSearchRec;
begin
  Result:=-1;
  if FindFirst(AFileName,faDirectory + faHidden,F)=0 then
  begin
    try
      Result := F.Size;
    finally
      FindClose(F);
    end;
  End;
end;
Delphi-Quellcode:
procedure GetFilesInDirectory(Directory: String; Mask: String; List: TStrings; WithSubDirs, ClearList: Boolean; a : integer);

procedure ScanDir(const Directory: String);
var
  SR: TSearchRec;
  SearchedFiles : int64;
begin
SearchedFiles := 0;
  if FindFirst(Directory + Mask, faAnyFile - faDirectory, SR) < 0 then SearchedFiles := SearchedFiles + GetFileSize(Directory + SR.Name);
  if FindFirst(Directory + Mask, faAnyFile - faDirectory, SR) > 0 then SearchedFiles := SearchedFiles + GetFileSize(Directory + SR.Name);
  if FindFirst(Directory + Mask, faAnyFile - faDirectory, SR) = 0 then SearchedFiles := SearchedFiles + GetFileSize(Directory + SR.Name);
  if FindFirst(Directory + Mask, faAnyFile - faDirectory, SR) = 0 then try
    repeat
      List.Add(Directory + SR.Name);
    until FindNext(SR) <> 0;
  finally
    FindClose(SR);
  end;
a := SearchedFiles;
  if WithSubDirs then begin
Jetztschonmal danke für alle Antworten

bttb930 14. Mär 2005 15:20

Re: Dateisuche mit Zäheln der durchsuchten Datei-Grössen
 
GetFileSize liefert nur die Größe für Directories (0) oder versteckte Dateien, sonst -1.

St.Pauli 14. Mär 2005 15:31

Re: Dateisuche mit Zäheln der durchsuchten Datei-Grössen
 
Hatte aus verzweifelung :wink: rumprobiert^^ Da stand auch faAnyFile und das ergebnis war das gleiche

Luckie 14. Mär 2005 15:40

Re: Dateisuche mit Zäheln der durchsuchten Datei-Grössen
 
Du subtrahierst da Bit-Flags, das kann gut gehen, muss aber nicht.

St.Pauli 14. Mär 2005 15:49

Re: Dateisuche mit Zäheln der durchsuchten Datei-Grössen
 
Kapiere ich nicht^^ Kann man das irgendiwe nicht verbessern? Weil eigentlich m ü s s t e es so ja gehen, oder?

bttb930 14. Mär 2005 16:03

Re: Dateisuche mit Zäheln der durchsuchten Datei-Grössen
 
debug doch mal die getfilesize. vielleicht ist der dateiname falsch (evtl. fehlt der pfad oder ein backslash zw. pfad und dateinamen).

ich hab keine lust das für dich zu machen.

St.Pauli 14. Mär 2005 16:23

Re: Dateisuche mit Zäheln der durchsuchten Datei-Grössen
 
Musst du ja auch nicht. Ich hab halt nur keinen Plan.
Glaube aber das ganze hat garnichts mit Bit-Flags und getfilesize zu tun. Selbst wenn ich
Delphi-Quellcode:
if FindFirst(Directory + Mask, faAnyFile - faDirectory, SR) > 0 then SearchedFiles := 1;
einsetzte, kommt als bei meinem Label
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
VAR SearchedFiles : integer;
begin
GetFilesInDirectory('C:\','*.*', ListBox1.Items, False, True, SearchedFiles);
Label1.Caption := IntToStr(SearchedFiles);
end;
4361260 raus!

Luckie 14. Mär 2005 16:28

Re: Dateisuche mit Zäheln der durchsuchten Datei-Grössen
 
Den Code von sakura in der Code-Lib FindFirstFindFirst kann man mit ein paar Codezeilen so umbauen, dass er die Summer aller Dateigrößen zurückliefert.

bttb930 14. Mär 2005 16:29

Re: Dateisuche mit Zäheln der durchsuchten Datei-Grössen
 
wahrscheinlich muß es einfach heissen:

Delphi-Quellcode:
  SearchedFiles := 0;
  SizeSum := 0;
  if FindFirst(Directory + Mask, faAnyFile - faDirectory, SR) = 0 then
  try
    repeat
      List.Add(Directory + SR.Name);
      SizeSum := SizeSum + GetFileSize(IncludeTrailingBackslash(Directory) + sr.Name);
    until FindNext(SR) <> 0;
  finally
    FindClose(SR);
  end;

St.Pauli 14. Mär 2005 17:27

Re: Dateisuche mit Zäheln der durchsuchten Datei-Grössen
 
Ohhh :idea: , ich glaub ich habs. Hab es jetzt so gemacht, dass die Filesize in eine 2 ListBox geladen wird. So konnte ich dann vergleichen, bei welchen Dateien -1 steht. Dann hab ich nachgeguckt, und die waren alle versteckt. Jetzt hab ich einfach statt

Delphi-Quellcode:
if FindFirst(AFileName,faAnyFile + faHidden,F)=0 then
Delphi-Quellcode:
if FindFirst(AFileName,faAnyFile or faHidden,F)=0 then
genommen, und es klappt.

Danke trotzdem an bttb930 und Luckie!!!!! :thumb: :thumb: :thumb:


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

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz