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, 18:10   #10  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,691 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от Gustav Посмотреть сообщение
Возьмите ключом контейнер [Время создания, Сквозной уникальный счетчик (типа i++)]
Тогда уж [Время создания, Имя файла].

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