Сортировка файлов

Тема в разделе "Delphi - Система", создана пользователем destroy, 27 апр 2008.

Статус темы:
Закрыта.
  1. destroy

    destroy Гость

    У меня в программе пользователь выберает директорию и все файла добавляются в Memo.
    Хочу сделать сортировочку. Тоесть чтобы можно было сортировать по названию, расширению, размеру.
    Подскажите как это сделать?
     
  2. destroy

    destroy Гость

    Получаю список файлов так:

    Код (Text):
    procedure FindFilesByMask(List :tStrings; var DirCount :Integer; const DirName, Mask :String; SubDir: Boolean = True);

    procedure ScanDirs(const DirName :String);
    var
    h  :tHandle;
    wfd :tWin32FindData;
    sfo :string;
    n :integer;
    SearchRec2 :TSearchRec;



    begin
    Inc(DirCount);

    h := Windows.FindFirstFile(PChar(DirName+Mask), wfd);

    end;

    try
    if h <> INVALID_HANDLE_VALUE then begin
    repeat
    if (wfd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
    List.Add(DirName+wfd.cFileName);
    until not Windows.FindNextFile(h,wfd);
    end;

    case GetLastError of
    ERROR_NO_MORE_FILES,    // больше нет файлов и каталогов удовлетворяющих маске (но были)
    ERROR_FILE_NOT_FOUND,  // вообще нет файлов и каталогов удовлетворяющих маске
    ERROR_SHARING_VIOLATION // возникает во время создания каталога (уже создан но еще недоступен)
    :; // ничего не делаем, все Ok
    else // все остальные ошибки
    raise Exception.CreateFmt('Ошибка просмотра каталога "%s": %s',[DirName,SysErrorMessage(GetLastError)]);
    end;
    finally
    if h <> INVALID_HANDLE_VALUE then Windows.FindClose(h);
    end;

    // Теперь рекрсивно просмотрим подкаталоги
    if not SubDir then exit;
    h := Windows.FindFirstFile(PChar(DirName+'*.*'), wfd);
    try
    if h <> INVALID_HANDLE_VALUE then begin

    repeat
    if  ((wfd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) <> 0)
    and (wfd.cFileName <> String('.'))
    and (wfd.cFileName <> '..')       then
    ScanDirs(IncludeTrailingPathDelimiter(DirName+wfd.cFileName));
    until not Windows.FindNextFile(h,wfd);
    end;

    case GetLastError of
    ERROR_NO_MORE_FILES,    // больше нет файлов и каталогов удовлетворяющих маске (но были)
    ERROR_FILE_NOT_FOUND,  // вообще нет файлов и каталогов удовлетворяющих маске
    ERROR_SHARING_VIOLATION // возникает во время создания каталога (уже создан но еще недоступен)
    :; // ничего не делаем, все Ok
    else // все остальные ошибки
    raise Exception.CreateFmt('Ошибка просмотра каталога "%s": %s',[DirName,SysErrorMessage(GetLastError)]);
    end;
    finally
    if h <> INVALID_HANDLE_VALUE then Windows.FindClose(h);
    end;
    end;

    begin // FindFilesByMask
    ScanDirs(IncludeTrailingPathDelimiter(DirName));
    end;
    Можно было бы конечно записать список файлов в массив и отсортировать.
    Просто интересно, можно ли сделать это по другому.
     
  3. destroy

    destroy Гость

    sax_ol, я так тоже делал.

    Но все ни так просто у меня.
    Код который я привел не совсем полный так сказать...

    Принцип такой:
    Если найдена папка, название ее добавляется в memo
    И после того как все имена файлов, которые находятся в этой папке добавлены в memo,
    добавляется опять строчка с название этой папки.

    Например:

    video
    c:\video\1.avi
    c:\video\2.avi
    c:\video\3.avi
    video

    music
    c:\music\1.mp3
    c:\music\2.mp3
    ...

    А когда я закидываю в TStringList
    у меня есессно все сбивается.

    Думал может есть какая ф-я для сортировки при поиске файлов...
     
  4. destroy

    destroy Гость

    Да это я так для примера привел.
     
  5. destroy

    destroy Гость

    да я просто пример привел как я получаю список файлов.
    Тоесть в начале название папки потом файлы потом опять название папки.
    и вопрос просто как отсортировать все это и чтобы сохранилась структура.

    Это Вы что то путаете.
     
  6. destroy

    destroy Гость

    Вопрос закрыт. Сделал.

    читать надо, а не смотреть.

    В 5 сообщение я расписал подробно что хотел.
     
Загрузка...
Похожие Темы - Сортировка файлов
  1. vera2014
    Ответов:
    0
    Просмотров:
    1.069
  2. Liori
    Ответов:
    2
    Просмотров:
    1.002
  3. FCDK
    Ответов:
    0
    Просмотров:
    1.260
  4. ленарано
    Ответов:
    1
    Просмотров:
    1.102
  5. Creder
    Ответов:
    0
    Просмотров:
    1.344
Статус темы:
Закрыта.

Поделиться этой страницей