![]() |
Verzeichnisgröße ermitteln -> Probleme mit großen Dateien
Hallo!
Derzeit bastle ich mir eine Rekursiv-Routine zusammen, um die Größe von Verzeichnissen zu ermitteln. Dabei verwende ich FindFirst und FindNext zusammen mit einem tSearchRec. Nur ergab sich jetzt bei dieser Konstellation ein kleines Problem: tSearchRec.Size beinhaltet die größe der gefundenen Datei in Bytes. Nur ist 'Size' als Integer definiert und so ein wenig eingeschränkt bei großen Dateien. Kenn jemand eine Möglichkeit, hier auch die Größe von sehr großen Dateien (4GB, ...) richtig zu ermitteln? Thanks! |
Re: Verzeichnisgröße ermitteln -> Probleme mit großen Dat
Delphi-Quellcode:
Das benutze ich immer ...
function FileSize(Filename : string): int64;
var fs : TFileStream; begin result := -1; try fs := TFileStream.Create(Filename, fmOpenRead OR fmShareDenyWrite); result := fs.Size; finally fs.free; end; end; |
Re: Verzeichnisgröße ermitteln -> Probleme mit großen Dat
Ich benutze immer das:
Delphi-Quellcode:
function GetFileSize(szFile: PChar): Int64;
var fFile: THandle; wfd: TWIN32FINDDATA; begin result := 0; if not FileExists(szFile) then exit; fFile := FindFirstfile(pchar(szFile),wfd); if fFile = INVALID_HANDLE_VALUE then exit; result := (wfd.nFileSizeHigh*(Int64(MAXDWORD) + 1))+wfd.nFileSizeLow; windows.FindClose(fFile); end; |
Re: Verzeichnisgröße ermitteln -> Probleme mit großen Dat
Zitat:
|
Re: Verzeichnisgröße ermitteln -> Probleme mit großen Dat
Ups. :oops: Ich war irgendwann mal gerade dabei den Parameter der Funktion in einen String zu ändern, als ich wohl mal wieder Delphi Support per ICQ spielen musste. :roll:
Ihr glaubt gar nicht wie viele Tastaturen ohne die F1 Taste ausgeliefert werden. :mrgreen: |
Re: Verzeichnisgröße ermitteln -> Probleme mit großen Dat
Vielen Dank für die Tipps - hab' meine Routine umgebaut und jetzt klappts auch mit großen Dateien.
Thanks! P.S. Interessant ist auch, dass ich bei meiner tSearchRec-Routine keine Fehlermeldung o.ä. erhalten hab' - der Wert von Size ging einfach an den Maximalwert und das wars; Wären nicht einige Verzeichnisse so recht putzig ausgefallen, dann wär mir das wahrscheinlich gar nicht so aufgefallen... |
Re: Verzeichnisgröße ermitteln -> Probleme mit großen Dat
Was soll auch passieren? Es kommt einfach zu einem Überlauf. Hättest du allerdings das Overflow Checking aktiviert hättest du auf eine
![]() Zitat:
|
Re: Verzeichnisgröße ermitteln -> Probleme mit großen Dat
Moin Zusammen,
TSearchRec liefert sehr wohl auch die Grösse von Dateien > 2GB, allerdings etwas "unhandlich", nämlich aufgeteilt auf die DWORDs TSearchRec.FindData.nFileSizeHigh und TSearchRec.FindData.nFileSizeLow. |
Re: Verzeichnisgröße ermitteln -> Probleme mit großen Dat
Moin!
Ich will nur Methode von Nightshade noch anmerken, das u.a. bis Delphi 5 die TStream's Objekte (auch TFileStream) noch mit Integer definiert sind und noch nicht mit Int64. Daher ist die Lösung nicht für alle Delphi Versionen praktikabel - der Code von Luckie funktioniert dabei auf diesen Delphi Version ohne Einschränkung. MfG Muetze1 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:58 Uhr. |
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