Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Запись в реестр через WinAPi [D6, WinXP]


anod ©   (2002-05-12 00:42:00) 

На OnClick поставил такой код:
var rp: pchar; Key: HKEY; Disp: DWORD;
begin
rp := "\Software\CDS\";
RegCreateKeyEx(HKEY_CURRENT_USER, rp, 0, nil, REG_OPTION_NON_VOLATILE, KEY_WRITE, nil, Key, @Disp);
rp :="1024 x 768 32 - 100Mhz";
RegSetValueEx(Key, "res1",0,REG_SZ, rp, SizeOf(rp));
RegFlushKey(Key);
RegCloseKey(Key);
end;


Не работает, никаких изменений видимых в реестре не происходит.
Подскажите пожалуйста, где ошибка?


n\a   (2002-05-16 04:23:00) [1]

function hRegWriteStr(Key: HKEY, SubKey, Value, Data:String): Boolean;
var
h: hkey;
d: dword;
begin
Result:= False;
d:= SizeOf(Data);
if RegOpenKeyEx(Key, PChar(SubKey),0,KEY_WRITE,h)=ERROR_SUCCESS then
if RegSetValueEx(h, PChar(Value), 0, REG_SZ, pchar(Data), D)=ERROR_SUCCESS then
Result:= True;
RegCloseKey(h);
end;


спец. для чайников... =)

REG_SZ, pchar(Data), D
^^^^^^^^^^^^^^^^^^^^^^
меняя эти значения пишешь str, dword, bin


KSergey   (2002-05-15 16:24:00) [2]

RegQueryValueEx - чтение значения из реестра
Про RegEnumKeyEx - сам переводи, уж не обессуть
The RegEnumKeyEx function enumerates subkeys of the specified open registry key. The function retrieves information about one subkey each time it is called. Unlike the RegEnumKey function, RegEnumKeyEx retrieves the class name of the subkey and the time it was last modified.


Jazzy$   (2002-05-14 17:34:00) [3]

На torry.ru есть компонент http://www.torry.net/vcl/system/registry/minireg.zip
Там все есть


anod   (2002-05-13 00:07:00) [4]

Разобрался, всё дело было в SubKey.

Подскажите, с помощью какой функции (и как) читать из реестра
Что такое RegEnumKeyEx, RegQueryValueEx?


фтщв   (2002-05-12 14:02:00) [5]

Может кто-нибудь привести код, а лучше примерчик программы, которая проверенно использует эти функции?


anod   (2002-05-12 10:45:00) [6]

2[NIKEL] Вы немного недосмотрели....
2Cobalt А какой у вас wIndows, может все дело в нем?
У меня ничего не видно.

2n\a
У меня компилятор сначала выругался на StrToHKEY, a потом получил FALSE?

Может это из-за прав доступа?
Если да, можно ли работать с INI файлами через WInApi


Cobalt   (2002-05-12 09:18:00) [7]

SizeOf(rp), а также SizeOf(Data) = 4
Используйте ф-ии получения ДЛИНЫ строки.

>anod © (12.05.02 00:42)
Что самое страное, так то, что твой код работает, и в реестре все видно. Вот экспорт из реестра:

REGEDIT4

[HKEY_CURRENT_USER\SOFTWARE\CDS]
"res1"="1024 x 768 32 - 100Mhz"


n\a   (2002-05-12 05:34:00) [8]

попробуй так =)

function hRegWriteStr(RootKey, SubKey, Value, Data:String): Boolean;
var
h: hkey;
d: dword;
begin
Result:= False;
d:= SizeOf(Data);
if RegOpenKeyEx(StrToHKEY(RootKey),PChar(SubKey),0,KEY_WRITE,h)=ERROR_SUCCESS then
if RegSetValueEx(h, PChar(Value), 0, REG_SZ, pchar(Data), D)=ERROR_SUCCESS then
Result:= True;
RegCloseKey(h);
end;


[NIKEL]   (2002-05-12 01:22:00) [9]

RegSetValueEx
первый аргумент - хэндл ключа, к которому добовляются данные
второй - указатель на строку, содержащий имя добовляемых данных
третий резерв
четвертый - определяет тип информации, который будет сохранен в качестве данных
всего типов 12
а ты пишешь в третьем параметре тип данных!


Наверх

Титульная страница Поиск, карта сайта Написать письмо