0

我开始使用 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

4

2 回答 2

3

LNDatabase::GetDocument 采用 UNID* 参数,而不是 UNIVERSALNOTEID*。

要获取 UNID,请使用 LNUniversalID 类。有一个接受字符串参数的构造函数和一个返回指向 UNID 的指针的 GetUniversalID 方法。

于 2013-02-21T02:30:44.650 回答
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);
}
于 2013-02-21T21:37:42.427 回答