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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.02.2016, 15:48   #1  
gefr is offline
gefr
Участник
Аватар для gefr
MCBMSS
 
147 / 17 (1) ++
Регистрация: 01.11.2004
Адрес: МО, Котельники
Большое спасибо AndyD.
Мне надо было получать все файлы из папки и подпапок по маске. переделал:
X++:
static container FindFiles(str Path,str Mask)
{
    DLL         _winApiDLL      = new DLL('KERNEL32');
    DLLFunction _findNextFile  = new DLLFunction(_winApiDLL, 'FindNextFileA');
    container res;

    #define.FILE_ATTRIBUTE_DIRECTORY(0x00000010)
    container findNextFileLoc(int handle)
    {
        Binary      data            = new Binary(0x200);
        ;
        if (_findNextFile.call(handle, data))
            return [data.DWord(0), data.string(44)];
        return connull();
    }

    void findFilesOnDisk(str _path)
    {
        container           files;
        container           c;
        FileName            fileName;
        boolean             directory;
        ;
        if (substr(_path, strlen(_path), 1) != "\\") _path += "\\";
        files = WinApi::findFirstFile(_path + "*.*");
        if (files != connull() && conpeek(files, 1) != -1)
        {
            fileName = conpeek(files, 2);
            directory = conpeek(files, 3);
            while (fileName)
            {
                if (directory && fileName != "." && fileName != "..")
                    findFilesOnDisk(_path + fileName + "\\");
                else if(subStr(fileName,strLen(fileName)-2,strLen(fileName))==Mask)res+=(_path + fileName);

                c = findNextFileLoc(conpeek(files, 1));
                if (c == connull())
                    break;
                fileName = conpeek(c, 2);
                directory = conpeek(c, 1) & #FILE_ATTRIBUTE_DIRECTORY != 0;
            }
            WinApi::findClose(conpeek(files, 1));
        }
    }
    ;
    _findNextFile.returns(ExtTypes::DWord);

    _findNextFile.arg(ExtTypes::DWord,
                       ExtTypes::Pointer);
    res=conNull();
    findFilesOnDisk(Path);
    return res;
}
Старый 01.02.2016, 16:42   #2  
axm2013
Гость
 
n/a
А не посконнее ли DirectoryInfo.GetFiles
https://msdn.microsoft.com/en-us/lib...v=vs.110).aspx ?

https://community.dynamics.com/ax/f/33/t/104585 ?

Этот подход судя по классу DmfEntityBase используется как понимаю самим МС

Последний раз редактировалось axm2013; 01.02.2016 в 17:07.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Web-портал: открыть файл cherv DAX: Программирование 4 19.05.2008 16:42
Большой Log файл у базы. Что делать? Arahnid DAX: Администрирование 4 04.04.2007 16:10
Вывод отчета в файл в пакетном режиме Egor_bl DAX: Программирование 16 09.10.2006 19:10
Как отправить файл с кодами, понятными принтеру, в порт принтера? miaa DAX: Программирование 19 18.05.2006 19:18
Проблема с записью отчета в файл st_msav DAX: Программирование 2 19.01.2006 13:02

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

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

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