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

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

RegOpenKey [D6, WinXP]


psa247 ©   (2005-05-08 12:36:00) 


reg : hkey;
tmp : string;
begin
  RegOpenKey(HKEY_LOCAL_MACHINE,
  'SOFTWARE\Microsoft\Windows\CurrentVersion\Run\', reg);
  tmp:= Path+'\'+ Check_OS +' /start';
  if CBMain.Checked then
  RegSetValue(reg,'UMP',REG_SZ,PChar(tmp),sizeof(tmp))
else RegDeleteKey(reg, 'UMP');
  RegCloseKey(reg);

Подскажите, почему в значении параметра "UMP" пишется бред?
Заранее благодарен


psa247   (2005-05-08 14:11:00) [1]

Видел в FAQ вопрос по косяку TRegistry с доступом к HKLM, да и весит он много. Пришлось проект переписывать на WinAPI


Eraser   (2005-05-08 13:53:00) [2]

psa247 ©

Я вообще пользуюсь TRegistry.... имхо удобнее.


psa247   (2005-05-08 13:46:00) [3]

Вот что накопал:

The RegOpenKeyfunction opens the specified key. This function is provided for compatibility with Windows version 3.1. Win32-based applications should use the RegOpenKeyEx function.

The RegSetValuefunction associates a value with a specified key. This value must be a text string and cannot have a name. This function is provided for compatibility with Windows version 3.1. Win32-based applications should use the RegSetValueEx function, which allows an application to set any number of named values of any data type.

Т.е. вот так будет правильно

RegOpenKeyEX(HKEY_LOCAL_MACHINE,
'SOFTWARE\Microsoft\Windows\CurrentVersion\Run', 0, KEY_SET_VALUE, reg);
  tmp:= Path+'\'+ Check_OS +' /start';
  if CBMain.Checked then begin
  RegSetValueEX(reg, 'UMP',0,REG_SZ, PChar(tmp), Length(tmp));
  end
else RegDeleteKey(reg, 'UMP');
  RegCloseKey(reg);


Спасибо


VMcL   (2005-05-08 12:41:00) [4]

>> psa247 ©   (08.05.05 12:36)

> Подскажите, почему в значении параметра "UMP" пишется бред?

Потому что sizeof(tmp) = 4

RegSetValue(reg, 'UMP', REG_SZ, PChar(tmp), Length(tmp))


Eraser   (2005-05-08 12:40:00) [5]

psa247 ©

Потому, что tmp должна иметь тип PChar, и у для неё должна быть выделена память (GetMem).


Наверх

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