Я начинаю работать с Lotus Notes C ++ API. Я пытаюсь получить документ на основе UNID. Я знаю конкретный UNID, но я не знаю, как записать его в UNIVERSALNOTEID
,
Я использую Lotus Notes 8.5.2, C ++ API 8.0.2, Windows 7 64-bit, Visual Studio 2008, C ++ (управляемый).
Я могу открыть базу данных.
....
//Get and open a database.
LNDatabase SrcDb;
Session.GetDatabase( c, &SrcDb, chrServer );
SrcDb.Open();
Затем я пытаюсь получить документ.
LNDocument ld;
const UNIVERSALNOTEID u = "00000000000000000000000000000000";
SrcDb.GetDocument(&u, &ld);
При компиляции я получаю ошибку
error C2440: 'initializing' : cannot convert from 'const char [33]' to 'const
UNIVERSALNOTEID'
Вот где мне нужно узнать, как правильно пройти u
в GetDocument
,
LNDatabase :: GetDocument принимает аргумент UNID *, а не UNIVERSALNOTEID *.
Чтобы получить UNID, используйте класс LNUniversalID. Есть конструктор, который принимает строковый аргумент, и метод GetUniversalID, который возвращает указатель на UNID.
@Richard Schwartz предоставил полезную информацию, необходимую для создания следующего кода:
//Declare document
LNDocument ld;
//Assign to string, convert to const char *, convert to LNString;
std::string strUNID = "F33DD4EA2E8FD32888257B0A0061C063";
const char * chrUNID = strUNID.c_str();
const LNString * lnstrUNID = new LNString(chrUNID);
//Get UNID *
LNUniversalID * lnUNID = new LNUniversalID(*lnstrUNID);
const UNIVERSALNOTEID * unidUNID = lnUNID->GetUniversalID();
//Get document.
LNSTATUS lsGetDocument;
NOTEID ln;
try
{
lsGetDocument = SrcDb.GetDocument(unidUNID, &ld);
LNSTATUS lsStatus = ld.Open();
ln = ld.GetNoteID();
Console::Write("NOTEID: ");
Console::WriteLine(ln.ToString());
}
catch (System::Exception ^e)
{
String^ eMessage = e->Message;
Console::WriteLine(eMessage);
}