|
![]() |
#1 |
Участник
|
что-то не работает в 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). |
![]() |
#2 |
Участник
|
Забыл добавить, с чего я вообще в этот метод полез: не работала функция "Reopen recently closed window" в табаксе, если открывался редактор методов таблиц. В мапе открытых форм и их АОТ адресов хранился путь с "Data dictionary", а этот метод должен пробелы заменить на "%20", чего он не делал (возвращал пустую строку). Поэтому хранился путь только к АОТ.
В 4.0 новый появился тип int64, в который и переводился #E_POINTER при сравнении. А URLEscape.call() возвращает int. |
|
Теги |
tabax, taskbar, toolbar, инструменты, панель задач, панель инструментов, полезное, табакс, тулбар, управление окнами |
|
|