AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Dateigröße in Byte auslesen

Ein Thema von MrDelock123 · begonnen am 4. Mai 2017 · letzter Beitrag vom 4. Mai 2017
Antwort Antwort
MrDelock123

Registriert seit: 17. Aug 2015
6 Beiträge
 
#1

Dateigröße in Byte auslesen

  Alt 4. Mai 2017, 15:22
Delphi-Version: XE3
Hallo zusammen,

wie kann ich die Größe einer Datei auf dem Datenträger auslesen? Bisher kann ich nur die "normale" Größe ermittlen:

Code:
function GetFileSize(const AFileName: string): Int64;
var
  F: TSearchRec;
begin
  Result := -1;
  if FindFirst(AFileName, faAnyFile, F) = 0 then
  begin
    Result := F.FindData.nFileSizeLow or (F.FindData.nFileSizeHigh shl 32);
  end;
end;
Allerdings brauche ich die Größe, die unter Windows als "Größe auf Datenträger" angezeigt wird.

Danke im voraus.
Miniaturansicht angehängter Grafiken
datei.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Dateigröße in Byte auslesen

  Alt 4. Mai 2017, 15:37
Delphi-Quellcode:
if (meinwert mod clustergröße)>0 then
    plattenplatz:=((meinwert div clustergröße)+1)*clustergröße
  else
    plattenplatz:=(meinwert div clustergröße)*clustergröße;
Das sollte es sein (keine Gewähr für Tippfehler)

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

AW: Dateigröße in Byte auslesen

  Alt 4. Mai 2017, 15:38
Das müsste grob
(GetFileSize(Dateiname) div (Clustergrößer der Festplatte) + 1) * (Clustergrößer der Festplatte) sein.

Oder hier mal schauen: http://www.delphipages.com/forum/sho...d.php?t=191073
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.100 Beiträge
 
Delphi 12 Athens
 
#4

AW: Dateigröße in Byte auslesen

  Alt 4. Mai 2017, 15:46
An Alle, die jetzt manuell mit Clustern rechnen ... vergesst es!
* "kleine" Dateien liegen im NTFS als Atribut direkt in der MFT und nicht in einem eigenem Cluster
* SparseFiles? Da wo Cluster weggelassen und nicht im dateiSystem liegen.
* NTFS-komprimierte Daeien?
* usw.

http://stackoverflow.com/questions/3...f-file-on-disk

GetCompressedFileSize und den Rest ignorieren.


FindFirst?
Warum gibst du den Speicher/Suchergebnis nicht wieder frei?

Zitat:
Result := F.FindData.nFileSizeLow or (F.FindData.nFileSizeHigh shl 32);
Über 4 GB stimmt das nicht, denn wo werden wohl die zuvielen Bits hingeschoben, in einem 32-Bit-Integer?
Ins NICHTS!
Result := F.FindData.nFileSizeLow or (Int64(F.FindData.nFileSizeHigh) shl 32);
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PosEx im Delphi viel seltener praktiziert.

Geändert von himitsu ( 4. Mai 2017 um 15:52 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:55 Uhr.
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