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

Delphi Sources



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

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.06.2012, 21:15
PRStudio PRStudio вне форума
Прохожий
 
Регистрация: 18.02.2012
Сообщения: 13
Репутация: 143
По умолчанию Получить список всех папок, включая системные, скрытые и т.д.

И так, продолжаю список статей, "курсовую сдавать через три дня, а все работает криво и не так как надо, или не работает вообще" )

Столкнулся с еще одной проблемой при написании своего "Антивируса". Для построения списка папок я использую FindFirst, FindNext ... Но вот почему-то некоторые папки он причисляет к файлам, такие как C:\ProgramFiles, C:\Users и т.д., т.е. скрытые или системные папки попадают в список файлов, мой алгоритм пытается взять их хеш-сумму и естественно выдает ошибку.

Возникает вопрос, можно ли заставить FindFirst ... заставить найти абсолютно ВСЕ папки, какие бы круто скрытые или системные они ни были, или существует ли альтернативный подход, который решил бы данную проблему.

Алгоритм, который работает (почти) в данный момент:

Код:
    found := FindFirst(startPoint+'\*',faAnyFile,foundFolders);
    if (found = 0) Then begin
    while (found = 0) do begin
      if ((foundFolders.Name <> '.') and (foundFolders.Name <> '..')) Then begin
        if (foundFolders.Attr and faDirectory) = faDirectory  Then Begin
          Application.ProcessMessages;
          currentPath := startPoint + '\' + foundFolders.Name;
          setLength(allFolders,Length(allFolders)+1);
          allFolders[Length(allFolders)-1]:=currentPath;
          sGetFoldersListFromStartPoint(currentPath);
        end;
      end;
      found := FindNext(foundFolders);
    end;
    findClose(found);
    end;

где
found - состояние функции
foundFolders- запись TSearchRec
allFolders - массив с папками

Как видно, я пытаюсь отсеять все и оставить только папки, но сюда не пролезают такие папки как c:\program files и т.д., напротив, эти папки пролезают в алгоритм, который должен оставить только файлы и затем взять их хеш-сумму, благо поставил try-except который и отлавливает вылетающие ошибки при попытке взять хеш от папки.
Ответить с цитированием
 


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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