Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2014, 02:05   #1
Seo_Neo
Новичок
Джуниор
 
Регистрация: 07.11.2014
Сообщений: 5
По умолчанию Сверить параметры реестра

Всем хай=)
Подскажите как сравнить значения в реестре, например если там 0 то нормально, если 1 то исправить на 0. Знаю как добавить только:
Код:
procedure CreateKeyRun(name:string);
var
  key:HKEY;
begin
if RegOpenKeyEx(HKEY_CURRENT_USER,'SOFTWARE\Microsoft\Windows\CurrentVersion\Run',0,KEY_CREATE_SUB_KEY or KEY_SET_VALUE, Key)=ERROR_SUCCESS then
 begin
  RegSetValueEx(key,PChar(Name),0,REG_SZ,PChar('путь к папке'),(lstrlen(PChar('путь к папке'))+1)*SizeOf(Char));
  RegCloseKey(key);
 end;
end;
Данный код получается добавляем и создает параметр если его нету. А как сравнить уже имеющийся?
Seo_Neo вне форума Ответить с цитированием
Старый 07.11.2014, 07:54   #2
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

Используй TRegistry, там немного проще.
FaTaL вне форума Ответить с цитированием
Старый 07.11.2014, 08:36   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
А как сравнить уже имеющийся?
Вероятно, прочитать его оттудасоответствующей функцией.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 07.11.2014, 16:41   #4
Seo_Neo
Новичок
Джуниор
 
Регистрация: 07.11.2014
Сообщений: 5
По умолчанию

Цитата:
Сообщение от FaTaL Посмотреть сообщение
Используй TRegistry, там немного проще.
ну так сказать зачем пользоваться лишними модулями если можно обойтись имеющими))) я так понимаю мой способ из модуля window берется если я правильно знаю
Seo_Neo вне форума Ответить с цитированием
Старый 07.11.2014, 18:45   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
зачем пользоваться лишними модулями
Потому что не всегда WinAPI уместно.
Впрочем не важно.
RegQueryValueEx() тебе в помошь для получения данных из ключа.
Можешь залезть в генфонд Делфи класса TRegustry и просто подсмотреть как эта функа там используется.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.11.2014, 19:52   #6
Seo_Neo
Новичок
Джуниор
 
Регистрация: 07.11.2014
Сообщений: 5
По умолчанию

читаю так
Код:
var
 key:hkey;
 Handle: HKEY;
Res: LongInt;
DataType, DataSize: DWORD;
begin
RegOpenKeyEx(HKEY_LOCAL_MACHINE, PChar('SOFTWARE\Skype\Installer'), 0, KEY_QUERY_VALUE, Handle);
Label1.Caption:=IntToStr(RegQueryValueEx(Handle, PChar('BINGSRCHFF'), nil, @DataType, nil, @DataSize));
RegCloseKey(Handle);
end;
но почету то какой бы параметр не было выводится 0
Seo_Neo вне форума Ответить с цитированием
Старый 07.11.2014, 20:22   #7
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Edit......
Shouldercannon вне форума Ответить с цитированием
Старый 07.11.2014, 20:44   #8
Seo_Neo
Новичок
Джуниор
 
Регистрация: 07.11.2014
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
Edit......
что редактировать то, просто я не втупляю. Что делаю не так.
Seo_Neo вне форума Ответить с цитированием
Старый 07.11.2014, 20:45   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
выводится 0
Это хорошо. )
0 это ERROR_SUCCESS
А тебе бы не помешало внимательнее читать MSDN.
RegQueryValueEx() не возвращает данные из ключа, а возвращает код ошибки.
Данные возвращаются в некий буффер, который у тебя должен был быть вместо второго nil. Т.е. тебе нужно туда передать некую переменную, в которую и будет вписано значение ключа.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.11.2014, 23:19   #10
Seo_Neo
Новичок
Джуниор
 
Регистрация: 07.11.2014
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Это хорошо. )
0 это ERROR_SUCCESS
А тебе бы не помешало внимательнее читать MSDN.
RegQueryValueEx() не возвращает данные из ключа, а возвращает код ошибки.
Данные возвращаются в некий буффер, который у тебя должен был быть вместо второго nil. Т.е. тебе нужно туда передать некую переменную, в которую и будет вписано значение ключа.
ввел переменную buf:array[0..100] of PChar;
но результат тот же, в реестре этот параметр равен 7, а выводит 0

Код:
var
 key:hkey;
 Handle: HKEY;
Res: LongInt;
DataType, DataSize: DWORD;
buf:array[0..100] of PChar;
begin
RegOpenKeyEx(HKEY_LOCAL_MACHINE, PChar('SOFTWARE\Skype\Installer'), 0, KEY_QUERY_VALUE, Handle);
Label1.Caption:=IntToStr(RegQueryValueEx(Handle, PChar('BINGSRCHFF'), nil, @DataType, buf, @DataSize));
RegCloseKey(Handle);
end;
Seo_Neo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сверить документы Fraps_r Общие вопросы по программированию, компьютерный форум 0 16.10.2012 07:41
сверить TXT по шаблону SergiOD Общие вопросы Delphi 3 15.03.2011 14:42
ПАРАМЕТРЫ-КОНСТАНТЫ, НЕТИПИЗИРОВАННЫЕ ПАРАМЕТРЫ ПОДПРОГРАММ, МАССИВЫ И СТРОКИ ОТКРЫТОГО ТИПА Kira09 Паскаль, Turbo Pascal, PascalABC.NET 0 19.12.2010 17:28
Сверить данные с БД Alex2009 PHP 6 28.11.2010 17:46
Сверить Данные valerij Microsoft Office Excel 19 12.01.2010 18:43