Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Файловая система
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 26.07.2007, 17:06
fr33m4n fr33m4n вне форума
Прохожий
 
Регистрация: 23.07.2007
Адрес: Ростов на Дону
Сообщения: 10
Репутация: 10
Печаль ??? Поиск файлов по маске с указанием размера

народ всем привет помогите разобраться с кодом нарыл на сайте ищет папки во всех подкаталогах по маске и сохраняет это дело в файл...
вообщем пытался модифицировать его чтобы выводились размеры перовначально хотел сделать типо такого чтобы к примеру мы в маске использовали мп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
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:44.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter