Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2014, 17:46   #1
Vadik4
 
Регистрация: 05.06.2014
Сообщений: 4
По умолчанию Сортировка файловой системы

Всем привет, прошу помощи профессионалов, я не так давно программирую есть код (не отрицаю что не мой, частично) вывода файлов в список и информации о них но там выводится в перемешку папки и файлы, а нужно чтобы по порядку сначала папки потом файлы. Вот код:
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
WFD:WIN32_Find_Data;
HFile:THandle;
Attr,Path:String;
begin
 ListView1.Items.BeginUpdate;{Начинаем прорисовку}
 ListView1.Items.Clear;
 Path:=IncludeTrailingPathDelimiter('C:\Windows');{Добавляем '\' при его отсутствиии}
 HFile:=FindFirstFile(PChar(Path+'*.*'),WFD);{Ищем файлы только в указанном каталоге}
 if HFile<>INVALID_HANDLE_VALUE then {Проверяем отсутствие ошиьок}
  begin
   repeat
   if (WFD.dwFileAttributes and faHidden)<>2 then{Условие показыать\не показывать скрытые файлы}
    if StrPas(WFD.cFileName)<>'.' then
     with ListView1.Items.Add do
      begin
       if (WFD.dwFileAttributes and faDirectory)<>faDirectory then
        begin
         Caption:=WFD.cFileName;
         SubItems.Add(ExtractFileExt(WFD.cFileName));{Выделяем расширение}
         SubItems.Add('размер');{Размер файла}
        end else
         begin
          Caption:=(WFD.cFileName);{Имя папки}
          SubItems.Add('[Папка]');{Указываем что это папка}
          SubItems.Add('размер');
         end;
        SubItems.Add('Дата');{Время создания папки\файла}
        Attr:='----';
        if (WFD.dwFileAttributes and faArchive)<>0 then Attr[1]:='a';{Архивный}
        if (WFD.dwFileAttributes and faReadOnly)<>0 then Attr[2]:='r';{Только чтение}
        if (WFD.dwFileAttributes and faHidden)<>0 then Attr[3]:='h';{Скрытый}
        if (WFD.dwFileAttributes and faSysFile)<>0 then Attr[4]:='s';{Системный}
        SubItems.Add(Attr);{Атрибуты файла\папки}
      end;
      application.ProcessMessages;  { Чтобы форма не сильно тормозила во время поиска}
   until FindNextFile(HFile,WFD)<>True;
   Winapi.Windows.FindClose(HFile);
  end;
  ListView1.Items.EndUpdate;{Заканчиваем прорисовку файлов}
end;
Vadik4 вне форума Ответить с цитированием
Старый 08.06.2014, 17:55   #2
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Что интересно, я конкретно этот код уже вижу раз десятый. Дэжавю?
Vadik4 Копипастинг кода никогда ни к чему хорошему не приводит, так что сами, и ручками
P.S. Если есть желание сортировать файлы, то тут есть два варианта.
1 - програмно. Сначала заносим все данные в переменные, потом только выводим вначале каталоги, а потом файл
2 - используем сторонний SortListView. Фильтрация производится путём клика по заголовку ListView. Разложили, кликнули програмно. УСЁ.

Последний раз редактировалось doktor255; 08.06.2014 в 17:59.
doktor255 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Драйвер файловой системы vedro-compota Общие вопросы C/C++ 2 26.01.2012 21:50
Устройство файловой системы Alexandr-vi-92 Операционные системы общие вопросы 2 06.11.2008 08:14
Парсер файловой системы FAT32 svennick Общие вопросы C/C++ 4 26.03.2008 23:26