![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Общий объем файлов
13 © (2006-01-07 19:47:00)Использую FindFirst findnext FindClose для поиска файлов результат вывожу в Listview. А как подсчитать общий объем файлов найденных и выведенных в ListView
UnKnow1234 (2006-01-07 22:29:00) [1]
> А пример можно?
procedure TForm1.Button1Click(Sender: TObject);
Var F:TSearchRec;
i:Integer;
sum:Extended;
begin
sum:=0;
i:=faAnyFile;
If FindFirst('c:\Video\Movies\*.*',i,F)<>0 Then Exit;
While FindNext(F)=0 Do
If (F.Attr and faDirectory)=0 Then
sum:=sum+(F.Size);
Label1.Caption:=FloatToStr(sum)+' Byte';
end;
Virgo_Style (2006-01-07 21:13:00) [2]Sergey2005 (07.01.06 20:51) [8]
как там размер файла вычислить
Есть соответствующее поле у TSearchRec, если, конечно, не нужно реально занятое место на диске, там все гораздо интересней.
Sergey2005 (2006-01-07 20:51:00) [3]Привёл бы пример, да ток щас не помню как там размер файла вычислить, а лесть в справку нет желания.
Virgo_Style © (07.01.06 20:45) [6]
*или вместо процедуры сделать функцию, возвращающую общий размер найденных файлов, imho так красивше :-)*
С функцией оно понятно лудше, просто я привёл пример.
13 (2006-01-07 20:46:00) [4]А пример можно?
Virgo_Style (2006-01-07 20:45:00) [5]Sergey2005 (07.01.06 20:27) [5]
тогда filesize должна быть глобальной
или вместо процедуры сделать функцию, возвращающую общий размер найденных файлов, imho так красивше :-)
Sergey2005 (2006-01-07 20:27:00) [6]При нахождении файла, определяеш его раэмер к примеру в result, ну а потом приплюсовываеш к переменной filesize:
filesize:=filesize+result
filesize первоночально в 0 должно быть, если процедура запускается не один раз, то тогда filesize должна быть глобальной, чтоб не потерять общий результат.
13 (2006-01-07 20:03:00) [7]Если не сложно покажите на примере
procedure ffind(cat:string); //каталог, откуда начать поиск
var sea:TSearchRec;
res:integer; //результат поиска (0 или нет)
begin
res:=FindFirst(cat+'*.*',faAnyFile,sea); //ищем первый файл
res:=findNext(sea);//ищем следующий файл
While res=0 do
begin
if (Sea.Attr=faDirectory) and ((Sea.Name='.')or(Sea.Name='..')) then//чтобы не было файлов . и..
begin
Res:=FindNext(sea);
Continue;//продолжаем цикл
end;
if (Sea.Attr=faDirectory) then//если нашли директорию, то ищем файлы в ней
begin
Ffind(cat+Sea.Name+'\');//рекурсивно вызываем нашу процедуру
Res:=FindNext(Sea);//ищем след. файл
Continue;//продолжаем цикл
end;
form1.ListBox1.Items.Add(Sea.Name);//добавляем в Listbox:Tlistbox имя файла
Res:=FindNext(Sea);//ищем след. файл
end;
FindClose(Sea);//освобождаем пересенную поиска
end;
13 (2006-01-07 20:01:00) [8]Можно сразу при вводе в Listview в одной переменной складывать размер, тоесть файл 1 + 2 +3...
i:=i+filesize
получается только размер последнего файла
Sergey2005 (2006-01-07 19:57:00) [9]Можно сразу при вводе в Listview в одной переменной складывать размер, тоесть файл 1 + 2 +3...
i:=i+filesize
Virgo_Style (2006-01-07 19:57:00) [10]TSearchRec.Size, операция суммирования (+)