Используя API-функции формирую GUID. Но никак не могу получить это значение в символьном виде. Не понятно, где ошибка:
X++:
static void get_GUID(Args _args)
{
#define.MAX_PATH(260)
Dll ole32 = new Dll("OLE32");
DllFunction coCreateGuid = new DllFunction(ole32, "CoCreateGuid");
DllFunction stringFromGUID2 = new DllFunction(ole32, "StringFromGUID2");
Binary getGUID = new Binary(#MAX_PATH);
Binary strGUID = new Binary(#MAX_PATH);
int retVal;
;
// Формирую сам GUID
coCreateGuid.arg(ExtTypes::POINTER);
coCreateGuid.returns(ExtTypes::DWORD);
coCreateGuid.call(getGUID);
// Теперь пытаюсь его перевести
stringFromGUID2.arg(ExtTypes::POINTER,
ExtTypes::POINTER,
ExtTypes::DWORD);
stringFromGUID2.returns(ExtTypes::DWORD);
retVal = stringFromGUID2.call(getGUID,strGUID,#MAX_PATH);
print "Сформированный GUID ",getGUID.string(0);
// Теоретически, здесь должен получить строку "перевода", однако ничего нет.
print "Перевод содержит символов ", retVal;
print "Переведенный GUID ",strGUID.string(0);
// Пока сделал перевод таким образом, хотя нет уверенности в его правильности
print "Перевод вручную";
print int2hex(getGUID.dWord(0)),
"-", int2hex(getGUID.Word(4)),
"-", int2hex(getGUID.Word(4+2)),
"-", int2hex(getGUID.Word(4+2+2)),
"-", int2hex(getGUID.Word(4+2+2+2)), int2hex(getGUID.dWord(4+2+2+2+2));
pause;
}
Axapta 2.5 SP3