Und da bin ich mit Programm V2, mal sehen wo ihr noch überall Fehler findet
Moin Zusammen,
das fmShareDenyNone hilft Dir nichts, wenn ein anderer Prozess die Datei exklusiv geöffnet hat.
Die Verwendung von TSearchRec.Size funktioniert auch nur bedingt, da es auf 32-Bit begrenzt ist.
Besser:
iFileSize := (sr.FindData.nFileSizeHigh shl 32) or (sr.FindData.nFileSizeLow);
Dann werd ich mir da was überlegen müssen
Ich will ja keine Werbung machen, aber mit
meiner Komponente wäre das ganz einfach zu lösen gewesen
Schau ich mir gerne nachher an wenn ich Zeit habe
das fmShareDenyNone hilft Dir nichts, wenn ein anderer Prozess die Datei exklusiv geöffnet hat.
+ wenn man keine Berechtigung zum Lesen der Datei hat, dann geht das auch nicht
Hm ok, ich glaube dann stört mich das exklusiv
und würde mich wundern wenn ich Berechtigungen auf eine MSDOS.SYS kriegen würde, wo wäre denn da dann die Sicherheit?
Naja hab n bissl umgesattelt mit den vorhergehenden Beiträgen und meine Funktion, die auch (fast
) funktioniert, sieht so aus:
Delphi-Quellcode:
function TfrmMain.getDirectoryGroesse(OrdnerPfad:string) : Int64;
var Rec : TSearchRec; Groesse : Int64;
begin
Groesse := 0;
result := 0;
if SysUtils.FindFirst(OrdnerPfad + '*', faAnyFile, Rec) = 0 then
try
repeat
if (Rec.Name <> '.') and (Rec.Name <> '..')
then begin
if DirectoryExists(OrdnerPfad + Rec.Name)
then begin
Groesse := Groesse + getDirectoryGroesse(Ordnerpfad + Rec.Name + '\');
g_pLogFile.Warning('Öffne Ordner ' + Ordnerpfad + Rec.Name + '\');
end;
if FileExists(OrdnerPfad + Rec.Name)
then begin
Groesse := Groesse + Rec.Size;
g_pLogFile.Information('Datei ' + Ordnerpfad + Rec.Name + ' : ' + FormatFloat(' #,###.', Rec.Size));
end;
end;
until SysUtils.FindNext(Rec) <> 0;
finally
g_pLogFile.Warning('Ordnergröße ' + Ordnerpfad + Rec.Name + ' : ' + FormatFloat(' #,###.', Groesse));
SysUtils.FindClose(Rec);
end;
result := Groesse;
end;
Naja aber da scheint der irgendwie auch Dateien zu ignorieren, wenn ich einen Ordner (Bsp: 'C:\Users\Drahcir\' durchsuchen lasse, fehlen knapp 40GB, keine Ahnung wo die verschwinden
naja ich arbeite noch dran ... Kanns sein dasses die Ordner mit den Namen '.' oder '..' sind, die ich ja bei allem geflissentlich übergehe, was sind die eigentlich? (ich glaub ich bin wieder Off-Topic aber gehört ja zu dem Programm)
Vielen Dank nochmal für die schnellen und tollen Antworten