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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.03.2016, 11:37   #1  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,429 / 1772 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Метод WinAPI::createDirectoryPath не работает с сетевыми папками
Метод WinAPI::createDirectoryPath не работает с сетевыми папками. Собственно ошибка:
Цитата:
Ошибка вызова статического метода ClrObject.
System.Reflection.TargetInvocationException: Адресат вызова создал исключение. ---> System.ArgumentException: Путь UNC должен иметь вид \\server\share.
в System.IO.Path.NormalizePathFast(String path, Boolean fullCheck)
в System.IO.Path.NormalizePath(String path, Boolean fullCheck)
в System.IO.Path.GetFullPathInternal(String path)
в System.IO.Directory.CreateDirectory(String path, DirectorySecurity directorySecurity)
в System.IO.Directory.CreateDirectory(String path)
--- Конец трассировки внутреннего стека исключений ---
в System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
в System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
в System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
в System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
в ClrBridgeImpl.InvokeClrStaticMethod(ClrBridgeImpl* , Char* pszClassName, Char* pszMethodName, Char* assemblyName, Int32 argsLength, ObjectWrapper** arguments, Boolean* argsAreByRef, Boolean* isException)
Видимо разработчики просто забили забыли про этот случай. Лечится просто:
X++:
// Verifyes or creates Path
//
static client public boolean createDirectoryPath(FilePath _path)
{
    int         ptr;
    ;

    _path = strLRTrim(_path);

    if (substr(_path,strlen(_path),1) != '\\') // Adding backslash gives a more simple while-loop!
    {
        _path += '\\';
    }

    ptr = strfind(_path, '\\', 1, strlen(_path));

// fix case '\\server\share'
// -->>
    if (_path like '\\\\\\\\*')
    {
        ptr = strfind(_path, '\\', 3, strlen(_path));
        ptr = strfind(_path, '\\', ptr + 1, strlen(_path));
    }
// <<--

    while (ptr)
    {
        WinAPI::createDirectory(substr(_path, 1, ptr));

        if (!WinAPI::folderExists(substr(_path, 1, ptr)))
        {
            break;
        }

        ptr = strfind(_path, '\\', ptr + 1, strlen(_path));
    }

    return WinAPI::folderExists(_path);
}

Суть в том чтобы при разборе вложенных катологов пропустить первую часть пути, содержащую имя сервера и сетевого ресурса

Последний раз редактировалось S.Kuskov; 30.03.2016 в 11:42.
За это сообщение автора поблагодарили: Pustik (2), Logger (2), gl00mie (2).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
DAX 2009,5.0.1000.52 SP1 в таблице smmBusRelTable отсутствует метод convert2Customer Murlin DAX: Программирование 8 11.11.2009 16:23
Dynamics AX Geek: Finding files with WinAPI Blog bot DAX Blogs 1 08.10.2009 17:36
WinAPI. Ссылка (POINT) третьего уровня вложенности Владимир Максимов DAX: Программирование 2 06.02.2006 16:28
WinAPI::getLastError() DreamCreator DAX: Программирование 4 20.06.2005 10:03
Передача массива VARIANTов в Automation метод Maximin DAX: Программирование 0 09.10.2002 19:31

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 11:36.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.