|
17.10.2008, 11:32 | #1 |
MCITP
|
сортировка файлов
Всем привет.
Есть стандартный алгоритм обработки "входящих" файлов в каталоге: X++: [hdl, filename] = WinApi::findFirstFile(_Path+ '*.xml'); while (filename) { ............. filename = WinApi::findNextFile(hdl); } Есть желание сделать его в порядке времени создания - это возможно, никто не пробовал? Понимаю что есть вариант вычитать все файлы в массив, отсортировать, а потом их обрабатывать уже по конкретному имени, но может есть другие варианты? Спасибо!
__________________
Zhirenkov Vitaly |
|
17.10.2008, 12:42 | #2 |
Участник
|
Если использовать стандартный WinApi поиск, то других вариантов нет.
Сначала получаешь весь список, затем сортируешь как тебе надо и используешь
__________________
Axapta v.3.0 sp5 kr2 |
|
17.10.2008, 12:49 | #3 |
Moderator
|
Как вариант с несколько иным подходом - выполнить команду dir с включенной сортировкой по дате /od и выводом в файл:
X++: WinAPI::shellExecute('cmd', @'/c dir /od c:\temp > c:\temp\dir.txt'); X++: WinAPI::shellExecute('cmd', @'/c dir /b /od c:\temp > c:\temp\dir.txt'); |
|
17.10.2008, 18:47 | #4 |
MCITP
|
Да, такой вариант тоже рассмартивался как один из вариантов, но это не меньший изврат на мой взгляд.
Хочется красоты. ) 2 Andy А какие есть ещё варианты кроме стандартного WinAPI-поиска? На самом деле меня ничего с ним обобо не связывает.
__________________
Zhirenkov Vitaly |
|
17.10.2008, 19:38 | #5 |
Участник
|
А нестандартные - использовать сторонние библиотеки.
Насчет - какие именно, не подскажу, просто не использовал за ненадобностью. А чем вас не устраивает WinApi? В любом случае, в конце концов именно он и используется. А для хранения/сортировки использовать Map - в конце просто пробежать по нем, вот и отсортированные данные будут
__________________
Axapta v.3.0 sp5 kr2 |
|
20.10.2008, 16:29 | #6 |
MCITP
|
Цитата:
Сообщение от AndyD
А нестандартные - использовать сторонние библиотеки.
Насчет - какие именно, не подскажу, просто не использовал за ненадобностью. А чем вас не устраивает WinApi? В любом случае, в конце концов именно он и используется. А для хранения/сортировки использовать Map - в конце просто пробежать по нем, вот и отсортированные данные будут Просто я надеялся может есть какой-то способ более красивый и не требующий дополнительного програминга - типа WinApi::findFirstFile с дополнительным параметром сортировки. Ну а нет, так нет. Всем спасибо.
__________________
Zhirenkov Vitaly |
|
20.10.2008, 17:07 | #7 |
Участник
|
Массив надо будет потом дополнительно сортировать, Map это сам сделает
__________________
Axapta v.3.0 sp5 kr2 |
|
20.10.2008, 17:19 | #8 |
MCITP
|
Значит, либо я не догоняю вашу мысль, либо Вы что-то недодумали:
Имеем следующие факты: 1 Мне нужно отсортировать файлы в порядке времени их создания. 2 Map сортирует элементы по ключу 3 Каждый ключ в мапе может присутствовать только один раз 4 Одновременно могут быть созданы несколько файлов (предположим что в этом случае не важно какой будет читаться первым) Итак: - если мы берём ключ имя файла - то мне это ничем не поможет. - если мы берём ключ время создания, то пролетают пп. 3-4
__________________
Zhirenkov Vitaly |
|
20.10.2008, 17:23 | #9 |
Moderator
|
|
|
20.10.2008, 18:10 | #10 |
Участник
|
|
|
|
За это сообщение автора поблагодарили: ZVV (1). |
20.10.2008, 19:56 | #11 |
MCITP
|
Согласен.
__________________
Zhirenkov Vitaly |
|
20.10.2008, 17:34 | #12 |
Участник
|
Цитата:
X++: Set set = new Set(Types::Container); ; set.add(["filename.txt", createdDateTime, "исчо какое нить сортировочное поле"]); Последний раз редактировалось Lemming; 20.10.2008 в 17:36. Причина: забыл скобу контейнера закрыть |
|
20.10.2008, 18:03 | #13 |
Moderator
|
А вот при моем "несколько ином подходе" вон как всё компактненько получается:
X++: static void Job93(Args _args) { TextBuffer textBuffer = new TextBuffer(); int i; ; WinAPI::shellExecute('cmd', @'/c dir /od /b c:\winnt > c:\dir.txt'); sleep(200); textBuffer.fromFile(@'c:\dir.txt'); for (i=0;i<=textBuffer.numLines()-1;i++) { info(strLine(textBuffer.getText(),i)); } } Единственный минус - вместо русских букв в названии файла будут кракозябры (так сказать, издержки DOSа). Но если их можно избежать, то welcome! |
|
Теги |
ax3.0 |
|
Похожие темы | ||||
Тема | Ответов | |||
Печать самих файлов PDF | 9 | |||
Сортировка в гриде с двумя DataSource | 15 | |||
FormListControl сортировка | 2 | |||
Сортировка в гриде | 15 | |||
Глючит сортировка записей | 5 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|