![]() |
Добавление значений реестра
Здравствуйте. Прошу помощи. Я пытаюсь добавить значения в реестр, но не получается.
Вот что есть : Код:
unit Unit1; Button1 - для Windows 7 x64 Button2 - для Windows 7 x86 Button3 - для Windows 8 x64 Button4 - для Windows 8 x64 Button5 - для Windows XP Для каждой кнопки свои значения. Сейчас в коде прописаны действия для Button1. Необходимо еще написать несколько процедур для проверки Windows и разрядности. И по этим результатам ненужные кнопки были бы неактивны, но видимы. Был бы очень благодарен за помощь. |
Откройте для себя JEDI Code Library - http://wiki.delphi-jedi.org/wiki/JEDI_Code_Library и решите все проблемы сразу!
|
opel431, ничего не понял в этой библиотеке
|
Цитата:
Для работы с реестром необходимо в uses прописать JclRegistry и вызывать нужные Вам функции: RegWriteBinary, RegWriteMultiString! Для работы с информацией о версии и архитектуре, аналогично - JclSysInfo: IsWin7, IsWindows64 - возвратят Вам True (or False), если не Seven и не x64. Затем уж что хотите (Button1.Enabled = IsWin7 or not IsWindows64 или через блок begin...end т.д.). GetWindowsVersionString - вернет Вам в строку все что можно. Там прекрасный help и хоть и куцые но есть примеры! И проверяйте открытие ключа, а если не открыли? - if (Reg.OpenKey....) then ведь для этого функция и возвращает логику завершения (Boolean). Лучше весь блок делать в try..finally..end; |
opel431, не устанавливается вообще.
не могли бы вы написать мне точные строки. там всё на английском и я не пойму. вы уж меня извините |
Цитата:
Скачиваете, распаковываете в папку (например JEDI), из папки запускаете Install.bat, переходите на вкладку согласия с лицензией, внизу, ставите чек - I agree with the terms of the... ( "Я согласен с условиями лицензии MLP 1.1 "), на следующей вкладке Delphi или RADStudio (ваша версия Delphi) выбираете путь к пакетам BPL (C:\Users\Public\Documents\RAD Studio\8.0\Bpl) и путь к DCP (C:\Users\Public\Documents\RAD Studio\8.0\Bpl). Жмете кнопку Install. |
opel431, так всё таки установил с вашей помощью.
Теперь при компиляции стал ругаться: Код:
[Pascal Fatal Error] Project1.dpr(1): F1027 Unit not found: 'System.pas' or binary equivalents (.dcu) |
Цитата:
Цитата:
Вариаций много, для общего понимания достаточно. Код с "коленки", так что, проверяйте. uses JclRegistry, JclSysInfo, JclStrings; .... procedure TForm1.FormCreate(Sender: TObject); begin if IsWin7 then ...; if IsWindows64 then ...; end; ...... var RootKey: HKEY; PathKEY:String; begin RootKey := HKEY_LOCAL_MACHINE; SubKey := 'SOFTWARE\Programma\Razdel'; if not RegKeyExists(RootKey, PathKEY) then ShowMessage('.....! ') else begin if RegValueExists(RootKey, SubKey, 'DataFolder') then // если хотите проверять наличие параметра RegWriteString(RootKey, SubKey, 'DataFolder', 'C:\\ProgramData\\Programma\\Razdel'); // обычная строка с завершающим нулем. if RegValueExists(RootKey, SubKey, 'SetupVersion') then RegWriteDWORD(RootKey, SubKey, 'SetupVersion', 123); // 32-разрядное число (смотрите как записать, то-ли десятичное, то-ли как шестнадцатиричное. Есть перегруженная версия с доп. параметрами) if RegValueExists(RootKey, SubKey, '.....') then RegWriteInteger(RootKey, SubKey, '.....', 1); // целое if RegValueExists(RootKey, SubKey, '.....') then RegWriteString(RootKey, SubKey, '.....', REG_EXPAND_SZ, '%SystemRoot%\System32\shell32.dll,50'); // ссылки на переменные среды // ?* смотрите функцию StringsToMultiSz в Help! if RegValueExists(RootKey, SubKey, '.....') then RegWriteString(RootKey, SubKey, '.....', REG_MULTI_SZ, (?*)); // Последовательность строки с нулевым символом, завершающийся пустой строкой end; end; |
Время: 07:25. |
Время: 07:25.
© OSzone.net 2001-