Помогите с написанием программы,а то в понедельник сдавать надо плиз.
Программа начинает работу в заданном каталоге и спускается по дереву каталогов,записывая по пути размеры всех встретившихся ей файлов.Закончив сканирование каталога,программа должна распечатать гистограмму размеров файлов,используя шаг гистограммы в качестве параметра(например, при шаге 1024,файлы размером от 0 до 1023 байт попадают в один интервал,от 1024 до 2047 байт в другой и т.д.)
volvo
26.11.2005 2:28
Уже было где-то ... Но в общем случае - FindFirst/FindNext, проверяешь очередное имя файла на атрибут "каталог", и если этот атрибут установлен - запускаешь Ее Величество Рекурсию
Как сделать так что бы файлы выводились поблочно(по размерам) от 0-1023, 1023-2047....
klem4
29.11.2005 0:37
Вот сделал набросок .. но с ограничениями ... запускать программу с такими данными будет полезно только для файлов, размером от 1 до 20 мб, если чемто поможет, хорошо Если надо можно и гистограмму сделать ...
{$r-} uses crt, dos;
const maxDegree = 19; step = 1024 * 1024;
type
TLong = array[0..maxDegree] of byte; var startDir : string;
sizes : TLong;
procedure GetFiles(fn, dir : string; var L : TLong); var search : SearchRec; begin
if dir[length(dir)] <> '\' then dir := dir + '\';
FindFirst(dir + fn, AnyFile, search);
while dosError = 0 do begin if search.attr <> $10 then begin writeln(search.name:15, (search.size div step) : 10); inc(L[search.size div step]) end; FindNext(search); end;
FindFirst(dir + '*.*', Directory, search);
while doserror = 0 do begin if (search.attr and 16 <> 0) and (search.name[1] <> '.') then GetFiles(fn, dir + search.name, L); FindNext(search); end;
end;
var i : byte; begin
clrscr;
FillChar(sizes, sizeof(sizes),0);
GetFiles('*.*','c:\Downloads\Music\Rok', sizes);
writeln;
for i := 1 to maxDegree do if sizes[i] <> 0 then writeln(i,' mb : ',sizes[i]); readln; end.
Катя
29.11.2005 0:50
Да пожалуйста сделай гистограмму, заранее спасибо!!!
volvo
29.11.2005 1:35
Катя, Горизонтальная ч/б гистограмма в текстовом режиме (шаг гистограммы = 100Кб, диапазон размеров файлов - от 100К до 2Мб)
Если надо добавить цвет - скажи, сделаем...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.