Dirs og filer startende med punktum?
Hej, jeg bruger nedenstående funktion til rekusivt at finde størrelsen af et dir (kunne være S:\) inkl. subdirs og det fungerer som sådan fint nok..function GetDirSize(dir: string; subdir: Boolean): Int64;
var
rec: TSearchRec;
found: Integer;
begin
Result := 0;
if dir[Length(dir)] <> '\' then dir := dir + '\';
found := FindFirst(dir + '*.*', faAnyFile, rec);
while found = 0 do
begin
Inc(Result, rec.FindData.nFileSizeHigh shl 32 or rec.FindData.nFileSizeLow);
if (rec.Attr and faDirectory > 0) and (rec.Name[1] <> '.') and (subdir = True) then
Inc(Result, GetDirSize(dir + rec.Name, True));
found := FindNext(rec);
end;
FindClose(rec);
end;
Men! I dette specifikke tilfælde er S:\ et mounted netværksdrev (Samba sharing på en Linux server) hvor der også er filer og/eller dirs som starter med ".". Det kunne være et dir der hedder ".fisk" eller noget - og her tæller funktionen jo ikke.
Jeg har prøvet blot at fjerne "and (rec.Name[1] <> '.')" fra if-sætningen, men det _virker_ som om at funktionen så går i selvsving. Efter 5 minutter (normalt tager det blot et par sekunder) har den endnu ikke returneret et resultat.
Er det Windows der laver ballade? Skal det gøres på en bestemt anden måde?
Håber nogen kan hjælpe :/
