Lotus Notes C++;API通过UNID获取文档 我开始使用Lotus Notes C++ API。我正在尝试获取基于UNID的文档。我知道一个特定的UNID,但我不知道如何将它写入UNIVERSALNOTEID

Lotus Notes C++;API通过UNID获取文档 我开始使用Lotus Notes C++ API。我正在尝试获取基于UNID的文档。我知道一个特定的UNID,但我不知道如何将它写入UNIVERSALNOTEID,c++,lotus-notes,lotus-domino,lotus,C++,Lotus Notes,Lotus Domino,Lotus,我使用Lotus Notes 85.2、C++ API 80.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 UNIVERSAL

我使用Lotus Notes 85.2、C++ API 80.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

LNDatabase::GetDocument接受UNID*参数,而不是UNIVERSALNOTEID*


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

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);
}

@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);
}

一个快速的谷歌搜索发现。您试图将一个字符串分配给一个结构。@ JoaCHIMPILBORG您是正确的,但是您链接到的文档是针对Notes C API,而不是Notes C++ API。UNID是所有lotusnotes开发中的一个基本概念,在各种api中使用不同的标识符和表示有点令人困惑。您试图将一个字符串分配给一个结构。@ JoaCHIMPILBORG您是正确的,但是您链接到的文档是针对Notes C API,而不是Notes C++ API。UNID是所有lotusnotes开发中的一个基本概念,在各种api中使用不同的标识符和表示有点令人困惑。