S
Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе
А что имеется ввиду под вложенными файлами? И вообще где можно почитать про файлы и каталоги, работу с ними. Скиньте, плиз, ссылку!
Мне нужно работать с вкладкой Win32, как я поняла со стандартными функциями типа IsDirNotation, GetDirectoryName...
Вообще задача стоит так:
Есть два каталога. Посчитать общий объем, содержащихся в них файлов. :huh:
var
DirBytes: Integer;
procedure DirSize(Dir:string);
var
SearchRec : TSearchRec;
Separator : string;
begin
if Copy(Dir,Length(Dir),1)='\'
then Separator := ''
else Separator := '\';
if FindFirst(Dir+Separator+'*.*',faAnyFile,SearchRec) = 0
then begin
if FileExists(Dir+Separator+SearchRec.Name)
then DirBytes := DirBytes + SearchRec.Size
else if DirectoryExists(Dir+Separator+SearchRec.Name)
then if (SearchRec.Name<>'.') and (SearchRec.Name<>'..')
then DirSize(Dir+Separator+SearchRec.Name);
while FindNext(SearchRec) = 0 do
begin
if FileExists(Dir+Separator+SearchRec.Name)
then DirBytes := DirBytes + SearchRec.Size
else if DirectoryExists(Dir+Separator+SearchRec.Name)
then if (SearchRec.Name<>'.') and (SearchRec.Name<>'..')
then DirSize(Dir+Separator+SearchRec.Name);
end;
end;
FindClose(SearchRec);
end;
var
DirBytes: Integer;
procedure DirSize(Dir:string);
var
SearchRec : TSearchRec;
Separator : string;
begin
if Copy(Dir,Length(Dir),1)='\'
then Separator := ''
else Separator := '\';
if FindFirst(Dir+Separator+'*.*',faAnyFile,SearchRec) = 0
then begin
if FileExists(Dir+Separator+SearchRec.Name)
then DirBytes := DirBytes + SearchRec.Size;
while FindNext(SearchRec) = 0 do
if FileExists(Dir+Separator+SearchRec.Name)
then DirBytes := DirBytes + SearchRec.Size;
end;
FindClose(SearchRec);
end;
function DirSize(Dir:string): integer;
var
SearchRec : TSearchRec;
begin
if not (Dir[Length(Dir)] in ['\','/'])
Dir := Dir + '\';
Result := 0;
if FindFirst(Dir+'*.*',faAnyFile,SearchRec) = 0
then begin
repeat
if SearchRec.Attr and faDirectory <> 0
then inc(Result,DirSize(Dir+SearchRec.Name))
else if SearchRec.Attr and faVolumeID = 0
then inc(Result,SearchRec.Size)
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
end;
end;
Ай-ай-ай, Shader88... Кто использует для такого случая процедуры и глобальные переменные? В функцию бы это нужно!
if FileExists(Dir+Separator+SearchRec.Name)
then DirBytes := DirBytes + SearchRec.Size
else if DirectoryExists(Dir+Separator+SearchRec.Name)
then if (SearchRec.Name<>'.') and (SearchRec.Name<>'..')
then DirSize(Dir+Separator+SearchRec.Name);
while FindNext(SearchRec) = 0 do
begin
if FileExists(Dir+Separator+SearchRec.Name)
then DirBytes := DirBytes + SearchRec.Size
else if DirectoryExists(Dir+Separator+SearchRec.Name)
then if (SearchRec.Name<>'.') and (SearchRec.Name<>'..')
then DirSize(Dir+Separator+SearchRec.Name);
function DirSize(Dir: string): integer;
var
SearchRec : TSearchRec;
begin
if not (Dir[Length(Dir)] in ['\','/']) then
Dir := Dir + '\';
Result := 0;
if FindFirst(Dir+'*.*',faAnyFile,SearchRec) = 0
then begin
repeat
if (SearchRec.Attr and faDirectory <> 0) and (SearchRec.Name <> '.')
and (SearchRec.Name <> '..')
then inc(Result,DirSize(Dir+SearchRec.Name))
else if SearchRec.Attr and faVolumeID = 0
then inc(Result,SearchRec.Size)
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
end;
end;
От переформулирования понятней не стало ....
Обучение наступательной кибербезопасности в игровой форме. Начать игру!