Форум: "WinAPI";
Текущий архив: 2002.11.25;
Скачать: [xml.tar.bz2];
ВнизКак из реестра прочитать стринговое значение... Найти похожие ветки
← →
Reals (2002-10-15 18:31) [0]Помогите пожалуйста, столкнулся с такой проблемой.
Работаю с реестром, значения читаю из реестра при момощи функции
RegQueryValueEx(). Значения типы DWORD читаються без проблем, а вот значения типа STRING не читаються, то ошибка какая-то выходит, то переменная просто пустая. Но на самом деле параметр в реестре существует.
Подскажите кто знает в чем может быть ошибка.
Вот кусок кода:
if RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Run", 0, KEY_READ, RK) = ERROR_SUCCESS then
begin
SizeRun := 4;
D1 := REG_SZ;
if RegQueryValueEx(RK, "MyProgram", nil, @D1, @ValueRun, @SizeRun) = ERROR_SUCCESS then
SendMessage(chkBox, BM_SETCHECK, 1, 0) else SendMessage(chkBox, BM_SETCHECK, 0, 0);
RegCloseKey(RK);
end;
P.S. Главное это нужно сделать на WinAPI.
Заранее премного благодарен.
← →
MBo (2002-10-15 18:34) [1]что-то ты с @ перемудрил
← →
Reals (2002-10-15 18:45) [2]В переменной ValueRun должно находиться значение из реестра.
А что я перемудрил? Точно такое же работает если тип DWORD
← →
MBo (2002-10-15 18:51) [3]Как объявлена ValueRun?
Если PChar, то @ не надо
← →
Reals (2002-10-15 19:02) [4]Она объялена как String, Но как PChar я тоже пробовал и без @
← →
MBo (2002-10-15 19:08) [5]Объявлять ее как String и так обращаться
а) неправильно - надо без @ или @S[1]
б) вредно - откуда программа узнает, какая длина этой строки????
← →
Vit@ly (2002-10-15 20:38) [6]Не очень понятна тема конференции (WinAPI), если вы пишите код в Делфи
Где-то (возможно в глобальных переменных) описать REG и Str
REG : TRegistry;
Str: String;
/////////////////////////
А дальше без особых проблем
REG.OpenKey("Здесь путь к реестру",true "или False - разберешься");
Похоже у тебя "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
//Хотя Run это папка, а не параметр
Str:= REG.ReadString("Имя параметра");
В Str получишь значение параметра ключа в виде String (если я правильно понял вопрос)
Нужны пояснения, намыль!
← →
Reals (2002-10-16 11:38) [7]2MBo: Может есть примерчик как это сделать, а то по разному (и без @, и с @S[1]) пробывал ничего не получаеться, переменная пустая и все, хотя результат = ERROR_SUCCESS, а длина строки мне известна.
2Vit@ly: TRegistry мне не подходит, так как с подключением модуля Registry размер файла сразу увеличиваеться на 100Kb. А мен это не нужно. И я в курсе что с ним намного проще, всегда с ним работал. Да и программку мне нужно написать на чистом API, я это подчеркивал.
← →
han_malign (2002-10-16 12:25) [8]1. Никаких @ не надо
2. примерно так:
RegQueryValueEx(RK, "MyProgram", nil, @D1, nil, @SizeRun);
SetLength(ValueRun,SizeRun);
RegQueryValueEx(RK, "MyProgram", nil, @D1, PChar(ValueRun), @SizeRun);
ValueRun:=PChar(ValueRun);//обрубаем треминирующий #0
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2002.11.25;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c