![]() |
Größe auf dem Datenträger ermitteln.
Auf
![]() wird die Dateigrösse einer Datei ermittelt. Wie ermittele ich die Dateigröße auf dem Datenträger? Gruß |
Re: Größe auf dem Datenträger ermitteln.
Ich würde sagen, bis zu nächsten Cluster-Größe aufrunden. Frag mich aber nicht, wie man das macht.
|
Re: Größe auf dem Datenträger ermitteln.
Zitat:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var ClusterSize: Cardinal; SectorPerCluster : Cardinal; BytesPerSector : Cardinal; NumberOfFreeClusters : Cardinal; TotalNumberOfClusters: Cardinal; begin GetDiskFreeSpace(PChar('c:\'), SectorPerCluster,BytesPerSector, NumberOfFreeClusters, TotalNumberOfClusters); ClusterSize:=SectorPerCluster * BytesPerSector; ShowMessage (IntToStr (ClusterSize)); end; |
Re: Größe auf dem Datenträger ermitteln.
Und jezt noch als Funktion :stupid:
Delphi-Quellcode:
function GetRealFileSize (const drive : Char; const filesize : Cardinal) : Cardinal;
var ClusterSize: Cardinal; SectorPerCluster : Cardinal; BytesPerSector : Cardinal; NumberOfFreeClusters : Cardinal; TotalNumberOfClusters: Cardinal; realsize : Cardinal; begin GetDiskFreeSpace(PChar(drive +':\'), SectorPerCluster,BytesPerSector, NumberOfFreeClusters, TotalNumberOfClusters); ClusterSize:=SectorPerCluster * BytesPerSector; if not ((filesize MOD clustersize) = 0) then begin realsize := ((filesize div clustersize) * clustersize) + clustersize end else begin realsize := filesize; end; result := realsize; end; procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage (IntToStr (GetRealFileSize('c',4096))); end; |
Re: Größe auf dem Datenträger ermitteln.
Liste der Anhänge anzeigen (Anzahl: 1)
Ajo, soweit funzt das ganz schön :D
...aaaaaber: Was ist, wenn die Datei komprimiert ist? Dann ist die Dateigröße ja größer als die Dateigröße auf dem Datenträger... (Anhang) Und ![]() :arrow: Von daher sollte man anmerken, dass man Sharky's Funktion "GetRealFileSize" als Dateigröße das Ergebnis von ![]() edit: ![]() ![]() Gruß Stephan :dance: |
Re: Größe auf dem Datenträger ermitteln.
Hai Steve,
danke für den Hinweis (hihi ich kompriemiere nie die Laufwerke, darum habe ich das nicht bedacht). So müsste es jetzt aber stimmen oder?
Delphi-Quellcode:
function GetRealFileSize (const aFileName : String) : Cardinal;
var ClusterSize: Cardinal; SectorPerCluster : Cardinal; BytesPerSector : Cardinal; NumberOfFreeClusters : Cardinal; TotalNumberOfClusters: Cardinal; filesize : Cardinal; realsize : Cardinal; begin filesize := GetCompressedFileSize(PAnsiChar(aFileName),@filesize); GetDiskFreeSpace(PChar(afilename[1] +':\'), SectorPerCluster,BytesPerSector, NumberOfFreeClusters, TotalNumberOfClusters); ClusterSize:=SectorPerCluster * BytesPerSector; if not ((filesize MOD clustersize) = 0) then begin realsize := ((filesize div clustersize) * clustersize) + clustersize end else begin realsize := filesize; end; result := realsize; end; procedure TForm1.Button1Click(Sender: TObject); var RealFileSize : Cardinal; begin if (OpenDialog1.Execute) then begin RealFileSize := GetRealFileSize (OpenDialog1.FileName); ShowMessage (IntToStr (RealFileSize)); end; end; |
Re: Größe auf dem Datenträger ermitteln.
Jupp, läuft alles wie gewünscht :)
Man sollte evtl. noch prüfen, ob GetCompressedFileSize erfolgreich war (<> $FFFFFFFF) und ansonsten ne Fehlermeldung ausgeben. Und evtl. lieber mit ExtractFileDrive arbeiten, falls Datei ohne Pfad übergeben wird. Das dürft dann aber auch alles gewesen sein.. :zwinker: PS: Läuft unter Win95 nicht korrekt, Begründung siehe OH :wink: Gruß Stephan :dance: |
Re: Größe auf dem Datenträger ermitteln.
Zitat:
mfG mirage228 |
Re: Größe auf dem Datenträger ermitteln.
Ups, stimmt..
Hab jetzt nur bei GetDiskFreeSpace geguggt... Nunja, dann funzt die Lösung mit GetCompressedFileSize also wohl nur ab NT aufwärts :pale: :angel: Gruß Stephan |
Re: Größe auf dem Datenträger ermitteln.
Danke für die schnelle Hilfe.
Gruß |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:10 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