|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
??? Поиск файлов по маске с указанием размера
народ всем привет помогите разобраться с кодом нарыл на сайте ищет папки во всех подкаталогах по маске и сохраняет это дело в файл...
вообщем пытался модифицировать его чтобы выводились размеры перовначально хотел сделать типо такого чтобы к примеру мы в маске использовали мп3 и результат был таким C:\Ария\ = 30 Мб C:\Инструментал\ = 50 Мб короче учитывался размер файлов по маске а потом они складывались и писались в файл... ей Богу целый день сидел мострячил функцию filesize() не пойму как ее тут применить в каком месте ??? видимо тупею....8-( Код:
procedure CreateFileList (LogFile,StartDir: String; Mask: String ='*.*'; FindSubDir: Boolean = True); var hSRFile,hSRFolder,hFile,nBytesWritten: Cardinal; fndFile,fndFolder: WIN32_FIND_DATA; FileName: PChar; i: Byte; begin if StartDir[Length(StartDir)] <> '\' then StartDir := StartDir+'\'; i := 1; while i <> Length(Mask) do begin hSRFile := FindFirstFile(PChar(StartDir+Copy(Mask,i,5)),fndFile); inc(i,6); if hSRFile <> INVALID_HANDLE_VALUE then begin repeat if (fndFile.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) <> 0 then Continue; hFile := CreateFile(PChar(LogFile),GENERIC_WRITE,0,nil,OPEN_ALWAYS,0,0); if hFile <> INVALID_HANDLE_VALUE then begin FileName := PChar(StartDir+fndFile.cFileName+#13#10); SetFilePointer(hFile,0,nil,FILE_END); WriteFile(hFile,FileName^,Length(FileName),nBytesWritten,nil); CloseHandle(hFile); end; until not FindNextFile(hSRFile,fndFile); Windows.FindClose(hSRFile); end; end; if FindSubDir then begin hSRFolder := FindFirstFile(PChar(StartDir+'*.*'),fndFolder); if hSRFolder <> INVALID_HANDLE_VALUE then begin repeat if ((fndFolder.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) <> 0) and (fndFolder.cFileName <> '..') and (String(fndFolder.cFileName) <> '.') then CreateFileList(LogFile,StartDir+fndFolder.cFileName+'\',Mask); until not FindNextFile(hSRFolder,fndFolder); Windows.FindClose(hSRFolder); end; end; end; // Пример вызова: procedure TForm1.Button1Click(Sender: TObject); begin CreateFileList('c:\FileList.txt','c:\','*.doc;*.txt;*.log',True); end; Невозможного нет! На невозможное нужно чуть больше времени! ! ! (с) Den Braun |