Я не очень хорошо разбираюсь в C++ и Lotus Notes. У меня есть фрагмент кода, который печатает имя группы в журнале.
Util::AgentDebug("In Command::InitGroupMap(): Group Name = %s",lnGrpName.GetBuf());
lnGrpName — это LNstring. он работает нормально, но всякий раз, когда длина имени группы превышает 2200, происходит сбой.
вот пример - предположим, что имя группы
asd.Storage.Implementation; задача-mnncpohcpg01; задача-paersc2hcpg01; азскоттс02а; азскотс02b; ctshelns02a; ctshelns02b; флшонс03а; флшонс03b; iadubqns02a; iadubqns02b; мннкпоба0015; мннкпобркд01; mnncpoisobrcd01; mnncpoisobrcd02; мннкпоисов7к01; мннкполто01; мннкполто01_1; мннкполто01_имк; mnncpons03a; mnncpons03b; mnncpons900a_asd; mnncpons900b_asd; мннкпонс900с; mnncpons900c_asd; мннкпонс900д; мннкпонс900д_асд; мннкпонс900_асд; mnncpons900_sw1; mnncpons900_sw2; mnncposanc100; мннкпосанк200; мннкпосанр150; мннкпосанр250; мннкпосвк01; МННКПОФЛ9КР01; МННКПОФЛ9КР02; МННКПОНС900_sw1; МННКПОНС900_sw2; нжмадинс01а; нджмадинс01б; нджрос1нс05та; нджрос1нс05ТБ; нджвуднс05а; нджвуднс05б; NJCTMVSP01; p2erscba0145; paersc1ns900a_asd; paersc1ns900b_asd; paersc1ns900c; paersc1ns900d; paersc1ns900_sw1; paersc1ns900_sw2; paersc2ns900a_asd; paersc2ns900b_asd; paersc2ns900c; paersc2ns900d; paersc2ns900_sw1; paersc2ns900_sw2; paersc2ocum01; paersc2opm01; paerscns05; paerscnsv501a; paerscnsv501b; ПАКТМВСП01; ПАЕРСК1ФЛ9КР01; ПАЕРСК1ФЛ9КР02; PAERSC1LABBRCD01; PAERSC1LABBRCD02; PAERSC1LABSVC01; ПАЕРСК2ФЛ9КР01; ПАЕРСК2ФЛ9КР02; ПАЕРСК2ФЛ9КР03; PAERSC2LABBRCD01; PAERSC2LABBRCD02; PAERSC2LABSVC01; тксдаллнс02а; txdallns02b; МННКПОБА0014; paerscsvc03; njros1svc01; njros1svc02; p1ehowld202; p1ehowld203; p2ehowld202; p2ehowld203; мннкпольд202; мннкпольд203; МННКПОНС805_асд; МННКПОНС805а_асд; MNNCPONS805b_asd; MNNCPONS805b_asd; paersc2ns805_asd; paersc2ns805a_asd; paersc2ns805b_asd; мннкпоб15к01; paersc1g15k01; paersc2g15k01; paersc2sane103; paersc2sane203; P2ERSCBA0305; МННКПОБА0277; P2ERSCAPL0005; МННКПОАПЛ0016; p2erscba0147; мннкпоба0016; МННКПОЕССКН01; PAERSC2ECSCN01; ПАЕРСК2ФЛАР900_1; P2ERSCAPL0006; njros1labcisc100; нджрос1лабциск200; p1erscba0402; paersc2ns700_sw1; paersc2ns700_sw2; paersc2ns700a_asd; paersc2ns700b_asd; paersc2ns700_asd; paersc1ns700_sw1; paersc1ns700_sw2; paersc1ns700a_asd; paersc1ns700b_asd; paersc1ns700_asd; mnncpons700_sw1; mnncpons700_sw1; мннкпонс700_sw2; мннкпонс700а_асд; mnncpons700b_asd; mnncpons700c_asd; мннкпонс700д_асд; мннкпонс700_асд; p2erscba0346; p2erscba0146; paersc1ns500; paersc1ns500a_asd; paersc1ns500b_asd; paersc2ns500; paersc2ns500a_asd; paersc2ns500b_asd
эта проблема из-за LNString или GetBuf()?
Метод AgentDebug ниже -
void Util::AgentDebug( wchar_t * format , ... )
{
wchar_t tmp[2048];
va_list args;
char strBuff[4096];
int j = 0;
va_start(args, format);
vswprintf_s(tmp, format, args);
va_end(args);
int cnt = wcstombs(strBuff, tmp, 4095);
if(cnt < 0)
{
char *strInput = (char*)tmp;
for( int i = 0; i < (wcslen(tmp) * 2); i++ )
{
if(strInput[i] != 0)
strBuff[j++] = strInput[i];
}
strBuff[j] = '\0';
}
// AdkDebug (strBuff);
// Fix for IY98698 Certain Chinese character throws exception during recon (PMR10927999672)
// String to be logged is passed as second argument
AdkDebug("%s",strBuff);
}// end of func AgentDebug()
// end S15302
какова альтернатива этому, потому что я хочу напечатать имя группы в журнале.