Показать сообщение отдельно

  #4  
Старый 31.03.2009, 02:02
_nic
Постоянный
Регистрация: 05.05.2006
Сообщений: 743
Провел на форуме:
2982851

Репутация: 107


По умолчанию

Цитата:
Сообщение от slesh  
Максимальный размер не правильно даешь.
Вместо len=maxlen; поставь len=1000;

ошибку тут
Код:
RegQueryInfoKey(key,0,0,0,0,&maxlen,0,0,0,0,0,0);
//maxlen++;
for(;;)
{
len=maxlen;
memset(kname,NULL,1024*10);
retk=RegEnumKeyEx(key,keyind,kname,&len,0,0,0,0);
судя по виду RegQueryInfoKey(key,0,0,0,0,&maxlen,0,0,0,0,0,0); обламывается или дает не верный результат. Или в этом редультате значение чуть несчитая завершающий символ 0x00
по этмоу len содержит не правильный размер.
т.к. ты игнориш это значение и выделяешь фиксировано память через memset(kname,NULL,1024*10);
то и присвой len=1024*10 вместо len=maxlen;
Хм да причина в этом.Только вот теперь вылез ещё один баг.При вызове в последнем цикле wsprintf пtреодически и неожиданно выскакивает Eaccess Violation
 
Ответить с цитированием