void CCopyBlock::BuildBlockList(char* ModelClass, CSVector& List, CWordArray& FlagList, int& DefaultIndex) { DefaultIndex = -1; Strng s,Block; s.Set("(%s)", ModelClass); List.SetSize(16); FlagList.SetSize(16); int Cnt = 0; char Buff[16384]; char Buff1[16]; for (int i=0; i<2; i++) { CProfINIFile PF(i==0 ? CfgFiles() : PrjFiles(), (char*)CopyBlkFileName); CheckCopyBlockVer(PF); DWORD dw = PF.RdSectionNames(Buff, sizeof(Buff)); ASSERT(dw<sizeof(Buff)-2); //section too large!!! char* p = Buff; while (p[0]) { int len = strlen(p); char* Nextp = p; Nextp += (len + 1); char* pp = strstr(p, s()); if (pp) { if (PF.RdSection(p, Buff1, sizeof(Buff1))>0) { Block = p; Block.SetLength((int)(pp-p)); if (i==0 || List.Find(Block())<0) { if (Cnt>=List.GetSize()) { List.SetSize(List.GetSize()+8); FlagList.SetSize(FlagList.GetSize()+8); } List[Cnt] = Block; FlagList[Cnt] = (i==0 ? 1 : 0); Cnt++; } } } p = Nextp; } } List.SetSize(Cnt); FlagList.SetSize(Cnt); }
BOOL CBCGPRegistry::Read (LPCTSTR pszKey, CWordArray& wcArray) { wcArray.SetSize (0); BOOL bSucess = FALSE; BYTE* pData = NULL; UINT uDataSize; if (!Read (pszKey, &pData, &uDataSize)) { ASSERT (pData == NULL); return FALSE; } ASSERT (pData != NULL); try { CMemFile file (pData, uDataSize); CArchive ar (&file, CArchive::load); int iSize; ar >> iSize; wcArray.SetSize (iSize); for (int i = 0; i < iSize; i ++) { ar >> wcArray [i]; } bSucess = TRUE; } catch (CMemoryException* pEx) { pEx->Delete (); TRACE(_T("Memory exception in CBCGPRegistry::Read ()!\n")); } catch (CArchiveException* pEx) { pEx->Delete (); TRACE(_T("CArchiveException exception in CBCGPRegistry::Read ()!\n")); } delete [] pData; return bSucess; }