void TNGramBs::GetNGramStrV( const TStr& HtmlStr, TStrV& NGramStrV, TIntPrV& NGramBEChXPrV) const { TIntV NGramIdV; NGramStrV.Clr(); NGramBEChXPrV.Clr(); TNGramBs::GetNGramIdV(HtmlStr, NGramIdV, NGramBEChXPrV); NGramStrV.Gen(NGramIdV.Len(), 0); for (int NGramIdN=0; NGramIdN<NGramIdV.Len(); NGramIdN++){ TStr NGramStr=GetNGramStr(NGramIdV[NGramIdN]); NGramStrV.Add(NGramStr); } }
void TRegKey::GetKeyNmV(TStrV& KeyNmV) const { KeyNmV.Clr(); if (!Ok){return;} // get subkey count DWORD SubKeys; // number of subkeys DWORD MxSubKeyNmLen; // longest subkey size DWORD RetCd=RegQueryInfoKey( hKey, // key handle NULL, // buffer for class name NULL, // length of class string NULL, // reserved &SubKeys, // number of subkeys &MxSubKeyNmLen, // longest subkey size NULL, // longest class string NULL, // number of values for this key NULL, // longest value name NULL, // longest value data NULL, // security descriptor NULL); // last write time if (RetCd!=ERROR_SUCCESS){return;} // retrieve subkey-names if (SubKeys>0){ KeyNmV.Gen(SubKeys, 0); char* SubKeyNmCStr=new char[MxSubKeyNmLen+1]; DWORD SubKeyN=0; forever{ DWORD SubKeyNmCStrLen=MxSubKeyNmLen+1; DWORD RetCd=RegEnumKeyEx( hKey, // handle of key to enumerate SubKeyN, // index of subkey to enumerate SubKeyNmCStr, // address of buffer for subkey name &SubKeyNmCStrLen, // address for size of subkey buffer NULL, // reserved NULL, // address of buffer for class string NULL, // address for size of class buffer NULL); // address for time key last written to if (RetCd==ERROR_SUCCESS){ TStr KeyNm(SubKeyNmCStr); KeyNmV.Add(KeyNm); } else { break; } SubKeyN++; } delete[] SubKeyNmCStr; }