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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.07.2016, 09:17   #5  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Держите корректную обработку, универсальную для клиентского и серверного исполнения + Batch. На этом постоянно приходилось спотыкаться.

X++:
static boolean fileExists(FilePath _filePath)
{
    boolean     ret;
    ;

    if(isRunningOnServer())
    {
        new FileIOPermission(_filePath, #io_read).assert();

        //BP Deviation Documented
        ret = WinAPIServer::fileExists(_filePath);

        CodeAccessPermission::revertAssert();
    }
    else
    {
        ret = WinAPI::fileExists(_filePath);
    }

    return ret;
}
X++:
public static boolean moveFile(FilePath _filePathFrom, FilePath _filePathTo)
{
    boolean             ret;
    System.Exception    ex;
    ;

    if (AXUtils::fileExists(_filePathFrom))
    {
        if(isRunningOnServer())
        {
            new InteropPermission(InteropKind::ClrInterop).assert();

            try
            {
                System.IO.File::Move(_filePathFrom, _filePathTo);

                ret = true;
            }
            catch (Exception::CLRError)
            {
                ex = CLRInterop::getLastException();
                error(ex.ToString());
            }

            CodeAccessPermission::revertAssert();
        }
        else
        {
            WinAPI::moveFile(_filePathFrom, _filePathTo);

            ret = true;
        }
    }
    else
    {
        info(StrFmt("File '%1' does not exist.", _filePathFrom));
    }

    return ret;
}
X++:
public static boolean deleteFile(FilePath _filePath)
{
    boolean             ret;
    ;

    if (AXUtils::fileExists(_filePath))
    {
        if(isRunningOnServer())
        {
            new FileIOPermission(_filePath, #io_write).assert();

            //BP Deviation Documented
            ret = WinAPIServer::deleteFile(_filePath);

            CodeAccessPermission::revertAssert();
        }
        else
        {
            ret = WinAPI::deleteFile(_filePath);
        }
    }
    else
    {
        ret = true;
    }

    return ret;
}
За это сообщение автора поблагодарили: AlexeyS (2), S.Kuskov (2), arhat (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axaptapedia: WinAPI Blog bot DAX Blogs 0 04.07.2011 12:11
Dynamics AX Geek: Finding files with WinAPI Blog bot DAX Blogs 1 08.10.2009 17:36
Dynamics AX Geek: Finding files with WinAPI Blog bot DAX Blogs 0 28.10.2006 16:40
WinApi::deleteFile(filePath) DreamCreator DAX: Программирование 3 30.11.2005 16:16
WinApi. Удаление файлов глючит. NJD DAX: Программирование 10 05.12.2003 13:31

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

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

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