AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen Alle Foren als gelesen markieren

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 17.10.2008, 11:32   #1  
ZVV ist offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1.006 / 246 (11) ++++++
Registriert seit: 13.02.2004
Ort: Минск
? сортировка файлов
Всем привет.

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

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

Спасибо!
__________________
Zhirenkov Vitaly
Alt 17.10.2008, 12:42   #2  
AndyD ist offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2.560 / 2494 (89) +++++++++
Registriert seit: 20.08.2005
Если использовать стандартный WinApi поиск, то других вариантов нет.
Сначала получаешь весь список, затем сортируешь как тебе надо и используешь
__________________
Axapta v.3.0 sp5 kr2
Alt 17.10.2008, 12:49   #3  
Gustav ist offline
Gustav
Moderator
Benutzerbild von Gustav
SAP
Лучший по профессии 2009
 
1.858 / 1152 (42) ++++++++
Registriert seit: 24.01.2006
Ort: Санкт-Петербург
Blog-Einträge: 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');
Alt 17.10.2008, 18:47   #4  
ZVV ist offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1.006 / 246 (11) ++++++
Registriert seit: 13.02.2004
Ort: Минск
->
Zitat:
Zitat von Gustav Beitrag anzeigen
Как вариант с несколько иным подходом...
Да, такой вариант тоже рассмартивался как один из вариантов, но это не меньший изврат на мой взгляд.
Хочется красоты. )

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

А чем вас не устраивает WinApi? В любом случае, в конце концов именно он и используется.
А для хранения/сортировки использовать Map - в конце просто пробежать по нем, вот и отсортированные данные будут
__________________
Axapta v.3.0 sp5 kr2
Alt 20.10.2008, 16:29   #6  
ZVV ist offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1.006 / 246 (11) ++++++
Registriert seit: 13.02.2004
Ort: Минск
->
Zitat:
Zitat von AndyD Beitrag anzeigen
А нестандартные - использовать сторонние библиотеки.
Насчет - какие именно, не подскажу, просто не использовал за ненадобностью.

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

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

Итак:
- если мы берём ключ имя файла - то мне это ничем не поможет.
- если мы берём ключ время создания, то пролетают пп. 3-4
__________________
Zhirenkov Vitaly
Alt 20.10.2008, 17:23   #9  
Gustav ist offline
Gustav
Moderator
Benutzerbild von Gustav
SAP
Лучший по профессии 2009
 
1.858 / 1152 (42) ++++++++
Registriert seit: 24.01.2006
Ort: Санкт-Петербург
Blog-Einträge: 19
Zitat:
Zitat von ZVV Beitrag anzeigen
- если мы берём ключ время создания, то пролетают пп. 3-4
Возьмите ключом контейнер [Время создания, Сквозной уникальный счетчик (типа i++)]
Alt 20.10.2008, 17:34   #10  
Lemming ist offline
Lemming
Участник
Benutzerbild von Lemming
 
1.144 / 343 (14) ++++++
Registriert seit: 20.04.2004
Ort: Москва, Чайнатаун в Люблино
Blog-Einträge: 10
;)
Zitat:
Zitat von ZVV Beitrag anzeigen
- если мы берём ключ имя файла - то мне это ничем не поможет.
- если мы берём ключ время создания, то пролетают пп. 3-4
X++:
    Set     set = new Set(Types::Container);

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

Geändert von Lemming (20.10.2008 um 17:36 Uhr) Grund: забыл скобу контейнера закрыть
Alt 20.10.2008, 18:03   #11  
Gustav ist offline
Gustav
Moderator
Benutzerbild von Gustav
SAP
Лучший по профессии 2009
 
1.858 / 1152 (42) ++++++++
Registriert seit: 24.01.2006
Ort: Санкт-Петербург
Blog-Einträge: 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!
Alt 20.10.2008, 18:10   #12  
Владимир Максимов ist offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1.716 / 1204 (44) ++++++++
Registriert seit: 13.01.2004
Blog-Einträge: 3
Zitat:
Zitat von Gustav Beitrag anzeigen
Возьмите ключом контейнер [Время создания, Сквозной уникальный счетчик (типа i++)]
Тогда уж [Время создания, Имя файла].

Хотя, думаю, лучше сделать временную таблицу, содержащую имена файлов и их реквизиты и сортировать как нужно по ситауции.
This post has been rated by: ZVV (1).
Alt 20.10.2008, 19:56   #13  
ZVV ist offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1.006 / 246 (11) ++++++
Registriert seit: 13.02.2004
Ort: Минск
->
Zitat:
Zitat von Владимир Максимов Beitrag anzeigen
Хотя, думаю, лучше сделать временную таблицу, содержащую имена файлов и их реквизиты и сортировать как нужно по ситауции.
Согласен.
__________________
Zhirenkov Vitaly
Stichworte
ax3.0

 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Печать самих файлов 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
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 13:59 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.