Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.22;
Скачать: CL | DM;

Вниз

Общий объем файлов   Найти похожие ветки 

 
13   (2006-01-07 19:47) [0]

Использую FindFirst findnext FindClose для поиска файлов результат вывожу в Listview. А как подсчитать общий объем файлов найденных и выведенных в ListView


 
Sergey2005   (2006-01-07 19:57) [1]

Можно сразу при вводе в Listview в одной переменной складывать размер, тоесть файл 1 + 2 +3...
i:=i+filesize


 
Virgo_Style ©   (2006-01-07 19:57) [2]

TSearchRec.Size, операция суммирования (+)


 
13   (2006-01-07 20:01) [3]

Можно сразу при вводе в Listview в одной переменной складывать размер, тоесть файл 1 + 2 +3...
i:=i+filesize

получается только размер последнего файла


 
13   (2006-01-07 20:03) [4]

Если не сложно покажите на примере

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;


 
Sergey2005   (2006-01-07 20:27) [5]

При нахождении файла, определяеш его раэмер к примеру в result, ну а потом приплюсовываеш к переменной filesize:

filesize:=filesize+result

filesize первоночально в 0 должно быть, если процедура запускается не один раз, то тогда filesize должна быть глобальной, чтоб не потерять общий результат.


 
Virgo_Style ©   (2006-01-07 20:45) [6]

Sergey2005   (07.01.06 20:27) [5]
тогда filesize должна быть глобальной


или вместо процедуры сделать функцию, возвращающую общий размер найденных файлов, imho так красивше :-)


 
13   (2006-01-07 20:46) [7]

А пример можно?


 
Sergey2005   (2006-01-07 20:51) [8]

Привёл бы пример, да ток щас не помню как там размер файла вычислить, а лесть в справку нет желания.

Virgo_Style ©   (07.01.06 20:45) [6]
*или вместо процедуры сделать функцию, возвращающую общий размер найденных файлов, imho так красивше :-)*
С функцией оно понятно лудше, просто я привёл пример.


 
Virgo_Style ©   (2006-01-07 21:13) [9]

Sergey2005   (07.01.06 20:51) [8]
как там размер файла вычислить


Есть соответствующее поле у TSearchRec, если, конечно, не нужно реально занятое место на диске, там все гораздо интересней.


 
UnKnow1234   (2006-01-07 22:29) [10]


> А пример можно?


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;



Страницы: 1 вся ветка

Текущий архив: 2006.01.22;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.073 c
14-1135981510
Экс Версия для печати
2005-12-31 01:25
2006.01.22
С новым годом друзья !!!


6-1128695410
NikNet
2005-10-07 18:30
2006.01.22
Как изменить Сетевое имя/IP/Коментарий?


2-1135758673
darvin
2005-12-28 11:31
2006.01.22
ДПФ пример программной реализации Delphi


3-1132574911
NiGGa
2005-11-21 15:08
2006.01.22
ADOQuery c ADOConnection ом или без.


5-1121854743
XPOID
2005-07-20 14:19
2006.01.22
TFrame.Onshow