Dateigröße unter Windows
-
Hi,
ich habe ein Problem mit meinem aktuellen Projekt.
Es geht dabei um folgendes:
Das Programm beinhaltet die Größe von mehreren Dateien (alle so um die 4GB) auf das Byte genau. Diese Größen der EINZELNEN Dateien stimmen auch mit der Anzeige von Windows überein (es geht hier nicht um die "Größe auf Datenträger").
Wenn ich in meinem Programm die Größe aller Dateien zusammenrechne
(nach dem Schema Dateigröße1+Dateigröße2+Dateigröße3+Dateigröße3+...+Dateigröße_n), dann komme ich jedoch auf einen Wert der mit zunehmender Anzahl der Dateien viel zu klein ist.
(Bei 2 Dateien stimmt es noch, bei 5 liege ich um 3GB daneben bei 100 um 50GB)Ich habe daran gedacht, dass es an den Clustern meines Dateisystems liegen könnte, aber (bei 4KB Clustern ---> nachgeprüft) dürfte sich das höchstens an der 4.Nachkommastelle (alles in GB gemessen) bemerkbar machen (was für mich vernachlässigbar wäre).
Wie kommt Windows (vllt speziell Windows Vista?) auf diese "große" Gesamtgröße der Dateien? Habe ich was übersehen?
Vielen Dank
eXitus
-
Wenn ich in meinem Programm die Größe aller Dateien zusammenrechne
Wie machst Du das?
Simon
-
hi,
Die Dateigröße wird in einer Datenbank in Bytes gespeichert (per Highorder und Loworder, da ja die Byteanzahl zu groß ist für eine Int-Variable)
Intern im Programm liegt die Dateigröße meistens in GB vor (gerundet auf 2 Nachkommastellen)
Ich addiere dann einfach (wie oben bereits erklärt) die Größe der einzelnen Dateien zur Gesamtgröße.
Gruß
eXitus
-
Das Problem hat sich erledigt. Ich hatte übersehen, dass ich die LowOrderByte-Anzahl in einem unsigned long gespeichert hatte (bzw in einem DWORD). Zur Umwandlung von einem String zu einem unsigned long habe ich aber (Unicode!) _wtoi(String) verwendet. Als ich die unsigned Variante _wcstoul_l(...) verwendet hatte, hat sofort alles geklappt, trotzdem Danke!
eXitus