Ho<br>
Der Windows-Explorer in Windows NT 4.0/SP6 (Dateisystem NTFS) liefert auf meinem Rechner unterschiedliche Ergebnisse, wenn ich die Eigenschaften des Winnt-Verzeichnisses anzeigen lasse: mal ist es 255.183.244 Byte groß, mal sind es 255.171.960 Byte. Das passiert ohne sichtbare Dateiaktionen; zwischen den verschiedenen Anzeigeergebnissen habe ich nur die Eigenschaften mehrerer Verzeichnisse anzeigen lassen. Mit Windows 2000 (SP2/FAT 32) und Windows 98 (FAT 16) habe ich dieses Problem nicht. Ist das ein Bug in Windows NT?
Anderseits zeigt folgende function stets die gleichen Ergebnisse an:
<pre>
function DirSize(Path:string):Int64;
var
sr : TSearchRec;
err : Integer;
begin
Result := 0;
if Path[Length(Path)]<>'\' then Path:=Path+'\';
err := FindFirst(Path + '*.*', faAnyFile, sr);
while (err = 0) do
begin
if ((sr.Attr and faDirectory) = faDirectory) and (sr.Name[1]<>'.') then
Result := Result + DirSize(Path + sr.Name)
else
Result := Result + sr.Size;
err := FindNext(sr);
end;
FindClose(sr);
end;
Oder hat diese Funktion einen Fehler?</pre>
Der Windows-Explorer in Windows NT 4.0/SP6 (Dateisystem NTFS) liefert auf meinem Rechner unterschiedliche Ergebnisse, wenn ich die Eigenschaften des Winnt-Verzeichnisses anzeigen lasse: mal ist es 255.183.244 Byte groß, mal sind es 255.171.960 Byte. Das passiert ohne sichtbare Dateiaktionen; zwischen den verschiedenen Anzeigeergebnissen habe ich nur die Eigenschaften mehrerer Verzeichnisse anzeigen lassen. Mit Windows 2000 (SP2/FAT 32) und Windows 98 (FAT 16) habe ich dieses Problem nicht. Ist das ein Bug in Windows NT?
Anderseits zeigt folgende function stets die gleichen Ergebnisse an:
<pre>
function DirSize(Path:string):Int64;
var
sr : TSearchRec;
err : Integer;
begin
Result := 0;
if Path[Length(Path)]<>'\' then Path:=Path+'\';
err := FindFirst(Path + '*.*', faAnyFile, sr);
while (err = 0) do
begin
if ((sr.Attr and faDirectory) = faDirectory) and (sr.Name[1]<>'.') then
Result := Result + DirSize(Path + sr.Name)
else
Result := Result + sr.Size;
err := FindNext(sr);
end;
FindClose(sr);
end;
Oder hat diese Funktion einen Fehler?</pre>
Comment