AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.10.2008, 11:32   #1  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
? сортировка файлов
Всем привет.

Есть стандартный алгоритм обработки "входящих" файлов в каталоге:
X++:
    [hdl, filename] = WinApi::findFirstFile(_Path+ '*.xml');

    while (filename)
    {
        .............
        filename = WinApi::findNextFile(hdl);
    }
Всё работает хорошо, НО - последдовательность отбора файлов идёт стандартно в порядке алфавита.
Есть желание сделать его в порядке времени создания - это возможно, никто не пробовал?
Понимаю что есть вариант вычитать все файлы в массив, отсортировать, а потом их обрабатывать уже по конкретному имени, но может есть другие варианты?

Спасибо!
__________________
Zhirenkov Vitaly
Старый 17.10.2008, 12:42   #2  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Если использовать стандартный WinApi поиск, то других вариантов нет.
Сначала получаешь весь список, затем сортируешь как тебе надо и используешь
__________________
Axapta v.3.0 sp5 kr2
Старый 17.10.2008, 12:49   #3  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Как вариант с несколько иным подходом - выполнить команду dir с включенной сортировкой по дате /od и выводом в файл:
X++:
WinAPI::shellExecute('cmd', @'/c dir /od c:\temp > c:\temp\dir.txt');
Правда, придется немного попотеть над разбором файла и кодировкой (если могут встречаться имена файлов с русскими буквами). Впрочем, если интересуют только имена файлов, то можно включить соответствующую опцию /b и будет полегче:
X++:
WinAPI::shellExecute('cmd', @'/c dir /b /od c:\temp > c:\temp\dir.txt');
Старый 17.10.2008, 18:47   #4  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от Gustav Посмотреть сообщение
Как вариант с несколько иным подходом...
Да, такой вариант тоже рассмартивался как один из вариантов, но это не меньший изврат на мой взгляд.
Хочется красоты. )

2 Andy
А какие есть ещё варианты кроме стандартного WinAPI-поиска?
На самом деле меня ничего с ним обобо не связывает.
__________________
Zhirenkov Vitaly
Старый 17.10.2008, 19:38   #5  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
А нестандартные - использовать сторонние библиотеки.
Насчет - какие именно, не подскажу, просто не использовал за ненадобностью.

А чем вас не устраивает WinApi? В любом случае, в конце концов именно он и используется.
А для хранения/сортировки использовать Map - в конце просто пробежать по нем, вот и отсортированные данные будут
__________________
Axapta v.3.0 sp5 kr2
Старый 20.10.2008, 16:29   #6  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от AndyD Посмотреть сообщение
А нестандартные - использовать сторонние библиотеки.
Насчет - какие именно, не подскажу, просто не использовал за ненадобностью.

А чем вас не устраивает WinApi? В любом случае, в конце концов именно он и используется.
А для хранения/сортировки использовать Map - в конце просто пробежать по нем, вот и отсортированные данные будут
Ну как я уже говорил, это вариант. (Правда не совсем понял при чём тут мэп, я думал про массив.)
Просто я надеялся может есть какой-то способ более красивый и не требующий дополнительного програминга - типа WinApi::findFirstFile с дополнительным параметром сортировки.
Ну а нет, так нет. Всем спасибо.
__________________
Zhirenkov Vitaly
Старый 20.10.2008, 17:07   #7  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Массив надо будет потом дополнительно сортировать, Map это сам сделает
__________________
Axapta v.3.0 sp5 kr2
Старый 20.10.2008, 17:19   #8  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от AndyD Посмотреть сообщение
Массив надо будет потом дополнительно сортировать, Map это сам сделает
Значит, либо я не догоняю вашу мысль, либо Вы что-то недодумали:

Имеем следующие факты:
1 Мне нужно отсортировать файлы в порядке времени их создания.
2 Map сортирует элементы по ключу
3 Каждый ключ в мапе может присутствовать только один раз
4 Одновременно могут быть созданы несколько файлов (предположим что в этом случае не важно какой будет читаться первым)

Итак:
- если мы берём ключ имя файла - то мне это ничем не поможет.
- если мы берём ключ время создания, то пролетают пп. 3-4
__________________
Zhirenkov Vitaly
Старый 20.10.2008, 17:23   #9  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от ZVV Посмотреть сообщение
- если мы берём ключ время создания, то пролетают пп. 3-4
Возьмите ключом контейнер [Время создания, Сквозной уникальный счетчик (типа i++)]
Старый 20.10.2008, 17:34   #10  
Lemming is offline
Lemming
Участник
Аватар для Lemming
 
1,144 / 343 (14) ++++++
Регистрация: 20.04.2004
Адрес: Москва, Чайнатаун в Люблино
Записей в блоге: 10
;)
Цитата:
Сообщение от ZVV Посмотреть сообщение
- если мы берём ключ имя файла - то мне это ничем не поможет.
- если мы берём ключ время создания, то пролетают пп. 3-4
X++:
    Set     set = new Set(Types::Container);

    ;
    
    set.add(["filename.txt", createdDateTime, "исчо какое нить сортировочное поле"]);

Последний раз редактировалось Lemming; 20.10.2008 в 17:36. Причина: забыл скобу контейнера закрыть
Старый 20.10.2008, 18:03   #11  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
А вот при моем "несколько ином подходе" вон как всё компактненько получается:
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!
Старый 20.10.2008, 18:10   #12  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,691 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от Gustav Посмотреть сообщение
Возьмите ключом контейнер [Время создания, Сквозной уникальный счетчик (типа i++)]
Тогда уж [Время создания, Имя файла].

Хотя, думаю, лучше сделать временную таблицу, содержащую имена файлов и их реквизиты и сортировать как нужно по ситауции.
За это сообщение автора поблагодарили: ZVV (1).
Старый 20.10.2008, 19:56   #13  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Хотя, думаю, лучше сделать временную таблицу, содержащую имена файлов и их реквизиты и сортировать как нужно по ситауции.
Согласен.
__________________
Zhirenkov Vitaly
Теги
ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Печать самих файлов PDF Владимир Максимов DAX: База знаний и проекты 9 17.08.2017 10:34
Сортировка в гриде с двумя DataSource ViV DAX: Программирование 15 05.06.2014 15:55
FormListControl сортировка maximka DAX: Программирование 2 26.12.2008 13:44
Сортировка в гриде Pegiy DAX: Функционал 15 06.12.2006 08:21
Глючит сортировка записей dd DAX: Функционал 5 17.08.2004 20:34

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 17:40.