Показать сообщение отдельно
  #5  
Старый 27.07.2007, 14:52
Аватар для 4kusNick
4kusNick 4kusNick вне форума
Местный
 
Регистрация: 06.09.2006
Адрес: Россия, Санкт-Петербург
Сообщения: 444
Репутация: 550
По умолчанию

Ну, все же предельно просто - указываешь в параметрах ф-ии еще 3 параметра:
1. Тип (маска) для файлов, размер которых надо считать.
2. var параметр для размера всей папки, в которой мы ищем
3. var параметр для размера только тех файлов, что мы указали в п.1

А на счет суммирования - все просто, у тебя будет 2 параметра, объявленные как var - их и суммируешь. например:

Код:
procedure CreateFileList (LogFile,StartDir: String; Mask: String; SpecMask: String; var iFullDirSize: Integer; var iSpecMaskSize: Integer; FindSubDir: Boolean = True);
вот и во время поиска, ты к iFullDirSize прибавляй р-р найденного по Mask файла, потом проверяй, соответствует ли найденный файл еще и маске SpecMask, если да то прибавляй к iSpecMaskSize его размер...

А размер файла можно получить при помощи API GetFileSize
Либо вот так:

Код:
function GetFileSizeByPath(sFileName: String): Int64;
var
  FindData: TWin32FindData;
  hFind: THandle;
begin
  Result := 0;
  hFind := FindFirstFile(PChar(sFileName), FindData);
  if hFind <> INVALID_HANDLE_VALUE then
  begin
		Windows.FindClose(hFind);
    if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
      Result := FindData.nFileSizeLow;
	end;
end;
__________________
THE CRACKER IS OUT THERE
Ответить с цитированием