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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.02.2009, 09:43   #1  
Sergikrus is offline
Sergikrus
Участник
 
82 / 15 (1) ++
Регистрация: 26.09.2008
Адрес: Tyumen
:( WinAPI::getFullPathName
Написал следущую обёртку для функции getFullPathName:

X++:
client static Filename getFullPathName(Filename _filename)
{
    DLL             _winApiDLL          = new DLL(#KernelDLL);
    DLLFunction     _getFullPathName    = new DLLFunction(_winApiDLL, 'GetFullPathNameW');
    Binary          bufer               = new Binary(#MAX_PATH);
    ;
    _getFullPathName.returns(ExtTypes::DWord);
    _getFullPathName.arg(ExtTypes::WString,
                         ExtTypes::Pointer,
                         ExtTypes::WString,
                         ExtTypes::WString);
    if(_getFullPathName.call(_filename, #MAX_PATH*2, bufer, null))
    {
           _getFullPathName.call(_filename, #MAX_PATH*2, bufer, null);
           return bufer.wString(0);
    }
    return '';
}
вызываю в Job - е:
X++:
static void WinAPIgetFullPathName(Args _args)
{
    Filename filename;
    ;

    filename = winAPI::getFullPathName("myfile.txt");
    info(strfmt("%1", filename));
}
Ничего не возвращает, подскажите если можете в чём ошибка
Старый 02.02.2009, 09:49   #2  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Посмотрите
WinApi::findFirstFile("мой файлик.расширение");
Может поможет
Старый 02.02.2009, 12:31   #3  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Второй параметр DWORD вроде, а не Pointer...
и под буфер выделять надо тогда тоже #MAX_PATH*2
Старый 02.02.2009, 13:57   #4  
Sergikrus is offline
Sergikrus
Участник
 
82 / 15 (1) ++
Регистрация: 26.09.2008
Адрес: Tyumen
Цитата:
Второй параметр DWORD вроде, а не Pointer...
и под буфер выделять надо тогда тоже #MAX_PATH*2
Увы и ах, но в таком случае Axapta говорит:

Ошибка:
Функция "GetFullPathNameW" в библиотеке DLL "KERNEL32" привела к возникновению исключения.
Старый 02.02.2009, 15:01   #5  
petergunn is offline
petergunn
Участник
 
118 / 274 (10) ++++++
Регистрация: 30.08.2005
Адрес: Tyumen
-> Пример. DAX 4.0
X++:
static void jbGetFullPathName(Args _args)
{
    #define.KernelDLL('KERNEL32')
    #define.offset0(0)
    
    str getFullPathName( fileName _fileName )
    {
        #define.BufferSize(2048)
        
        DLL         winApiDll = new DLL( #KernelDLL ) ;
        DLLFunction functionGetFullPathName = new DLLFunction( winApiDll, 'GetFullPathNameW' ) ;
        Binary      retVal = new Binary( #BufferSize * 2 ) ;    //  for *W functions alloc x2 size
        ;

        functionGetFullPathName.returns(ExtTypes::DWord);
        functionGetFullPathName.arg(ExtTypes::WString,
                                    ExtTypes::DWord,
                                    ExtTypes::Pointer,
                                    ExtTypes::Pointer);

        if( functionGetFullPathName.call( _fileName, #BufferSize, retVal, null ) )
            return retVal.wString( #Offset0 ) ;
        
        return '';
    }
    ;
    
    info( getFullPathName( 'SampleFileName.txt' ) ) ;
}
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Axapta WinAPI::SewWindow... кто знает как? UNRW DAX: Программирование 2 26.09.2008 15:28
Dynamics AX Geek: Finding files with WinAPI Blog bot DAX Blogs 0 28.10.2006 16:40
WinAPI. Ссылка (POINT) третьего уровня вложенности Владимир Максимов DAX: Программирование 2 06.02.2006 16:28
WinAPI::getLastError() DreamCreator DAX: Программирование 4 20.06.2005 10:03
WinApi. Удаление файлов глючит. NJD DAX: Программирование 10 05.12.2003 13:31

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

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

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