Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
3-82675
AlexeyMir
2002-11-07 13:38
2002.11.25
Удаление записей в Paradox из Delphi


14-82970
XPOH
2002-11-04 12:02
2002.11.25
Формат *.dcu файла


14-82940
vidiv
2002-11-05 15:15
2002.11.25
x97:l97 => Enter => Ctrl+Shift+{кнопочка мастера диаграм}


1-82772
Comp
2002-11-15 12:47
2002.11.25
Assambler


4-83084
maxim_m
2002-10-12 23:16
2002.11.25
Help





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский