Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2002.09.16;
Скачать: [xml.tar.bz2];

Вниз

Глючит RegEnumValues   Найти похожие ветки 

 
Cobalt   (2002-07-20 12:08) [0]

Пытаюсь перебрать параметры ключа HKEY_LOCAL_MACHINE.(Всего их там у меня 2:
"IE State"=dword:00000000
"FullLogging"="No")

Procedure AddValues(HK:HKEY;K_Id:integer);
var CntValues, vType, MaxNameLen, MaxDataLen:Cardinal;
i, NameLen, BufLen:Cardinal;
Buf:Pointer;
VName,s:string;
begin
if RegQueryInfoKey(HK,nil,nil,nil, nil,nil,nil,@CntValues,@MaxNameLen,@MaxDataLen,nil,nil)<>ERROR_SUCCESS
then begin
ShowMessage(SysErrorMessage(GetLastError)); exit;
end;
if CntValues<1 then exit;
for i:= 0 to CntValues-1 do
begin //MaxNameLen - does not include the terminating null character
NameLen:=MaxNameLen+1; // include the terminating null character.
SetLength(VName,NameLen);
BufLen:=MaxDataLen;
Buf:=AllocMem(BufLen);
if RegEnumValue(HK,i,PChar(VName),NameLen, nil,@vType,@Buf,@BufLen)<>ERROR_SUCCESS
then begin
ShowMessage(SysErrorMessage(GetLastError));
exit;
end;
SetLength(VName,NameLen);//обязательно!!!
VName:=VName+"Type = "+IntToStr(vType)+" Size = "+IntToStr(BufLen);
Form1.ListBox1.Items.Add(VName);
FreeMem(Buf);

end;
end;


Так вот, имена параметров возвращаются нормально, а вот со значениями - напряг. При первом проходе возвращает в Buf NIL, грит, "ошибки нет, все ОК!"
При втором проходе тоже ок, но Buf не обнуляется, а при FreeMem(Buf); выскакивает АВ.


 
Cobalt   (2002-07-20 12:33) [1]

Попробовал использовать RegQueryValue, все равно возвращает nil, и, сволочь, грит - "Все ОК!"

NameLen:=MaxNameLen+1; // include the terminating null character.
SetLength(VName,NameLen);
if RegEnumValue(HK,i,PChar(VName),NameLen, nil,@vType,nil,nil)<>ERROR_SUCCESS
then begin
ShowMessage(SysErrorMessage(GetLastError));
exit;
end; //получаем только имя параметра
SetLength(VName,NameLen);//обязательно!!!
BufLen:=MaxDataLen;
Buf:=AllocMem(BufLen);
if RegQueryValueEx(HK,PChar(VName),nil,@vType,@Buf,@BufLen)<>ERROR_SUCCESS
then begin
ShowMessage(SysErrorMessage(GetLastError));
exit;
end;
VName:=VName+"Type = "+IntToStr(vType)+" Size = "+IntToStr(BufLen);
Form1.ListBox1.Items.Add(VName);
FreeMem(Buf);


 
Cobalt   (2002-07-20 14:25) [2]

Если читаю DWord-ы, то ок. но как только появляется string или binary, то начинаются сплошь АВ


 
Случайный прохожий   (2002-07-21 20:11) [3]

А вот так не пробовал?
if RegQueryValueEx(HK,PChar(VName),nil,@vType, Buf,@BufLen)<>ERROR_SUCCESS
И хелп бы почитал. Заодно.
ЗЫ А зачем тебе вообще буфер, если ты его не используешь? Поставь нил и все дела.


 
Cobalt   (2002-07-21 23:10) [4]

И так (RegQueryValueEx(HK,PChar(VName),nil,@vType,Buf,@BufLen))
я тоже пробовал, тоже грит - еррор.
Попробовал как в TRegistry - через дополнит. проц-ру, ошибку уже не возвращает.
Буду разбираться...


 
Случайный прохожий   (2002-07-22 09:38) [5]

Не ну ты фрукт! Не стыдно врать?


 
Cobatl   (2002-07-22 14:26) [6]

Не, это почему же врать?
Я действительно так попробовал, и тоже вернула ошибку ("неправильный параметр")
А потом перестала...


 
Случайный прохожий   (2002-07-22 21:46) [7]

Дык я ж твою функцию с исправленным буф тока-что погонял по реестру - никаких ошибок!

> А потом перестала...

Чудеса! В решете.


 
Cobalt   (2002-07-23 18:52) [8]

>Случайный прохожий
Извиняюсь. Дико.
Я был не прав.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.09.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.007 c
14-50933
VictorT
2002-08-21 13:11
2002.09.16
Прикол.


1-50783
SergeyKnyazev
2002-09-03 12:35
2002.09.16
Нужно вывести рисунок на принтер


14-50953
Flash1
2002-08-21 21:51
2002.09.16
Методика оценки программного продукта?


3-50645
elektro
2002-08-26 14:58
2002.09.16
Запрос SQL


1-50717
dimanew
2002-09-05 12:45
2002.09.16
Возможноли изменить цвет TitleBara(Caption) у формы и если





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский