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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.10.2005, 14:52   #1  
leva is offline
leva
Участник
 
52 / 36 (2) +++
Регистрация: 03.08.2005
получение значения переменной окружения
Не нашел готовой функции получения значения переменной окружения в аксапте, поэтому реализовал сам так:

PHP код:
#define.structSize(255)
client static str getEnvironmentVariable(str VariableName)
{
/*DWORD GetEnvironmentVariable(
  LPCTSTR lpName,  // environment variable name
  LPTSTR lpBuffer, // buffer for variable value
  DWORD nSize      // size of buffer
);*/

    
DLL             _DLL        = new DLL('KERNEL32');
    
DLLFunction     _getEnvironmentVariableA = new DLLFunction(_DLL'GetEnvironmentVariableA');
    
Binary          bSize       = new Binary(#SizeOfInt);
    
Binary          bStrName    = new Binary(#structSize);
    
Binary          bStrValue   = new Binary(#structSize);


    
_getEnvironmentVariableA.returns(ExtTypes::DWord);
    
_getEnvironmentVariableA.arg(ExtTypes::Pointer,
                           
ExtTypes::Pointer,
                           
ExtTypes::DWord);

    
bStrName.string(#Offset0, VariableName);
    
bSize.dWord(#Offset0, #structSize);

    
if (_getEnvironmentVariableA.call(bStrNamebStrValuebSize))
        return 
bStrValue.string(#Offset0);
    
else
        return 
"";

Все вроде замечательно, вот только в bStrValue пустая строка. При этом возвращаемое значение имеет правильное значение - длину значения найденной переменной окружения (с учетом 0-символа).
Если bStrValue перед запуско че-нибудь инициализировать, то значение ее не изменится, т.е. как будто он просто не туда пишет.

Что скажете?
Старый 07.10.2005, 15:11   #2  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Вы неправильно передаете размер буфера в функцию.
PHP код:
    if (_getEnvironmentVariableA.call(bStrNamebStrValue#structSize)) 
Использовать Binary для него не надо.
__________________
Axapta v.3.0 sp5 kr2
Старый 07.10.2005, 15:23   #3  
leva is offline
leva
Участник
 
52 / 36 (2) +++
Регистрация: 03.08.2005
Цитата:
Изначально опубликовано AndyD
Вы неправильно передаете размер буфера в функцию.
PHP код:
    if (_getEnvironmentVariableA.call(bStrNamebStrValue#structSize)) 
Использовать Binary для него не надо.
Да работает, спасибо
Старый 07.10.2005, 17:57   #4  
pas
Гость
 
n/a
2 AndyD
признайтесь, вы на форуме бывали ранее августа 2005? Пароль потерян?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Присвоение значения переменной? Morpheus DAX: Программирование 9 30.08.2005 15:46
Получение больше одного значения из Lookup tolik DAX: Программирование 1 18.12.2003 11:26
Неправильные типы аргументов в операции присвоения значения переменной Anders DAX: Программирование 10 28.08.2003 17:08
Получение значения из грида Dimitry DAX: Программирование 1 25.06.2003 11:38
Установка и получение значения "налога товара" lm DAX: Программирование 5 15.02.2002 21:46

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

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

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