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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.09.2017, 16:42   #1  
ean is offline
ean
Участник
 
2 / 10 (1) +
Регистрация: 17.11.2010
Вызов функции DLL
Всем привет!
Нужно переконвертировать строку обычную в строку base64
Аксапта 3.0
Хочу использовать CryptBinaryToString из DLL crypt32.dll
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

Набросал джоб для тестов

X++:
static void Str2Base64(Args _args)
{
    #define.minTIFSz(30000)  // Minimum try
    #define.maxTIFSz(900000) // Maximum try
    #define.TIFSzInc(10000)  // Increments during trying
    #define.sizeOfInt(4)
    #define.moredata(234)

    DLL         DLL                = new DLL('crypt32.dll');
    DLLFunction encode             = new DLLFunction(DLL, 'CryptBinaryToStringA');
    int         retval; // BOOL
    int         encodedlen;
    int         lasterr;
    Binary      binary;
    Binary      junk1 = new Binary(#SizeOfInt);
    Binary      junk2 = new Binary(#SizeOfInt);
    Binary      size = new Binary(#SizeOfInt);
    Binary      x = new Binary(64);
    int         TIFsz;
    BinData                 binData = new BinData();
    //TextBuffer              tb = new TextBuffer();
    Container               dataCon;
    str                     ret;
    int                     counter;

    #define.TestStr('Test')

    Binary BinData2Binary(BinData _bd)
    {
        Binary              b;
        int                 i;
        int                 num;
        ;
        num = _bd.getVariant().safeArray().lastIndex();

        b = new Binary(num+1);

        for(i=1; i<(num+1); i++)
        {
            b.byte(i-1, _bd.getVariant().safeArray().value(i));
        }

        return b;
    }
    //#define.InStr('U29tZSB0ZXh0')
    /*
    [url]http://msdn.microsoft.com/en-us/library/aa380285(VS.85).aspx[/url]

    BOOL WINAPI CryptBinaryToString(
      In      const BYTE   *pbBinary,
      In            DWORD  cbBinary,
      In            DWORD  dwFlags,
      Out_opt       LPTSTR pszString,
      Inout         DWORD  *pcchString
    );
    */
    encode.returns(ExtTypes::DWord); // BOOL
    encode.arg(
        Exttypes::Byte,
        Exttypes::DWord,
        Exttypes::DWord,
        Exttypes::String,
        Exttypes::DWord
    );

    binData.setStrData(#TestStr);

    binary = binData2Binary(binData);

    TIFSz = #minTIFSz;
    lasterr = #moredata;
    while (lasterr == #moredata)
    {
        if (TIFSz > #maxTIFSz)
            throw error(strfmt("The eInvoice image is larger than %1 bytes - cannot handle this",#maxTIFSz)); //TODO:Label

        Size.dWord(0, binData.getVariant().safeArray().lastIndex() + 1);

        retval = encode.call(
            binary,
            binData.getVariant().safeArray().lastIndex()+1,
            1,                           // Base64, without headers
            ret,
            counter);
        lasterr = DLL::lastDLLError();
        TifSz += #TIFSzInc;
    }
    if (!retval)
    {
        error(strfmt("%1 (%2)",WINAPI::formatMessage(lasterr),lasterr));
    }

    info(ret);
}
Но он ругается, что неверно передан параметр. Что не так я туда передал?
Делаю по аналогии с http://lehr.dk/dynax.php там обратная функция
Старый 21.09.2017, 18:26   #2  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,726 / 835 (31) +++++++
Регистрация: 15.01.2002
Адрес: Москва
в BinData нет baseEncode64?
Старый 21.09.2017, 19:54   #3  
ean is offline
ean
Участник
 
2 / 10 (1) +
Регистрация: 17.11.2010
Цитата:
Сообщение от Wamr Посмотреть сообщение
в BinData нет baseEncode64?
В тройке, увы, нет
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Ax3 and Win2008 для печати Arahnid DAX: Администрирование 13 22.04.2013 17:07
MSDAX 4.0 и планировщик win server 2008 werov2010 DAX: Администрирование 11 16.08.2012 14:18
Client Axapta 3.0 SP4 и Linux. Как запустить? Daiver DAX: Администрирование 10 28.06.2007 15:59
Вызов экспортируемой функции DLL Jabberwocky DAX: Программирование 8 12.09.2006 17:20
при вызове функции из своей DLL, вылетает ошибка Delfins DAX: Программирование 9 07.03.2006 19:29
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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