我开始使用Lotus Notes C ++ API。我正在尝试根据UNID获取文档。我知道一个特定的UNID,但我不知道如何将它写入UNIVERSALNOTEID
。
我使用的是Lotus Notes 8.5.2,C ++ API 8.0.2,Windows 7 64位,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
的正确方法。
答案 0 :(得分:3)
LNDatabase :: GetDocument采用UNID *参数,而非UNIVERSALNOTEID *。
要获取UNID,请使用LNUniversalID类。有一个构造函数接受一个字符串参数,一个GetUniversalID方法返回指向UNID的指针。
答案 1 :(得分:1)
@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);
}