Показать сообщение отдельно
Старый 05.08.2009, 14:15   #290  
Denicce is offline
Denicce
Участник
 
62 / 54 (2) ++++
Регистрация: 22.03.2005
Адрес: Москва
что-то не работает в 4.0SP2ЕЕ функция urlEscape() из формы Tabax. Скопировал в job, также не работает; в 3.0 все ОК. В 4.0 выводит пустую строку.
X++:
static void JobTabaxUrlEscape(Args _args)
{
    str _s = "dsfsdfsdf ndfghghdf";
    DLL             dll = new DLL("shlwapi.dll");
    DLLFunction     URLEscape = new DLLFunction(dll, "UrlEscapeA");
    Binary          escaped = new Binary(strlen(_s)+1);
    Binary          cnt = new Binary(4);
    #define.E_POINTER(0x80004003)
    ;
    URLEscape.arg(ExtTypes::String, ExtTypes::Pointer, ExtTypes::Pointer, ExtTypes::DWord);
    URLEscape.returns(ExtTypes::DWord);
    cnt.dWord(0, strlen(_s)+1);
    if (URLEscape.call(_s, escaped, cnt, 0) == #E_POINTER)
    {
        escaped = new Binary(cnt.dWord(0)+1);
        URLEscape.call(_s, escaped, cnt, 0);
    }
    info(escaped.string(0));
}
ЗЫ Заменил
X++:
        if (URLEscape.call(_s, escaped, cnt, 0) == #E_POINTER)
на
X++:
        if (URLEscape.call(_s, escaped, cnt, 0) == any2int(#E_POINTER))
и все заработало.

Последний раз редактировалось Denicce; 05.08.2009 в 14:53.
За это сообщение автора поблагодарили: belugin (3).