Интернет-казино Grand Casino произвело фурор в игорном мире.
Одно из самых важных нововведений - наличие системы контроля честности всех азартных игр казино. Наличие контроля честности дает возможность полностью уйти в игру, не задумываясь о подтасовке или обмане. В Grand Casino можно пополнить счет и вывести выигрыш большим количеством способов:(SMS, E-gold, Rupay, Яндекс.Деньги, Webmoney,Кредитные карты,...). Теперь азартные игры на деньги стали доступнее.
Предоставлены игры: Рулетка, Покер, Блэкджек, Видео Покер, Игровые автоматы, Кено.
Реестр - один из важнейших элементов windows. Там можно найти множество настроек windows и других программ. Сейчас программистов больше привлекает хранение опций своих программ в реестре нежели в различных ini файлах. Приемущество очевидно : ini файл можно случайно изменить, удалить, или повредить какими-либо некоректными действиями; С записями в реестре это сделать гораздо сложнее... Реестр открывает новые возможности в программировании, в управлении "чужими" программами и других действиях. К примеру в реестре можно прописать программы, которые будут загружаться при старте windows, но их не будет ни в :"Автозагрузке" ни в autoexec.bat..., а в реестре их довольно трудно найти даже опытному программисту. Так что - дерзайте. Я уверен, что знание ключевых моментов в этой области значительно облегчит Ваш труд...
Работа с реестром разделяется на несколько этапов.
1. Вы должны объявить подключение модуля registry в uses.
2. Необходимо создать переменную типа tregistry и инициализировать ее. 3. Собственно работа с реестром.
4. Уничтожение переменной.
uses
..., registry,...
var
reg:tregistry; // Создание переменной reg
begin
reg:=tregistry.create; // Инициализирование этой же переменной
//------------ Программа------------
reg.destroy;
end;
Пункты 1, 2, 4 - ясны. Поэтому оставшаяся часть статьй будет посвящена именно 3-му пункту - работе с реестром. Самое первое дело, после выполнения второго пункта, это определение корневого ключа реестра. Он определяется с помощью свойства rootkey переменной reg.
Корневые ключи реестра:
hkey_classes_root (по умолчанию)
hkey_current_user
hkey_local_machine
hkey_users
hkey_current_config
hkey_dyn_data
Следующие свойства:
currentpath: string; Определяет путь к текущему ключу. currentkey: hkey; Определяет открытый в настоящее время ключ реестра.
procedure closekey;
Закрывает открытый в данный момент ключ реестра и записывает в реестра все изменения (если таковые были), произведенные в данном ключе. Вызов closekey несколько раз или при отсутствии открытого ключа не вызывает ошибки.
function createkey(const key: string): boolean;
Создает ключ key (где key - путь с разделителями "", например softwaretest. Имя корневого ключа в пути не указывается !! Он задается через property rootkey. Возвращает true при успешном создании
function deletekey(const key: string): boolean;
Удалить ключ key (аналогично createkey, только с точностью до наоборот)
function delete value(const name: string): boolean;
Удалить параметр с именем name текущего ключа. Очевидно, что предварительно необходимо открыть этот ключ
function getdatainfo(const valuename: string; var value: tregdatainfo): boolean;
Получить информацию о параметре valuename текущего ключа - его тип и размер. При написании программ применяется редко, т.к. программист и сам знает, какого типа его параметры. А вот при написании разного рода утилит для просмотра и редактирования реестра он просто незаменим.
Данная функция возвращает комплексную информацию о параметре, для получения данных о размере или типе можно применять getdatasize и getdatatype
function getdatasize(const valuename: string): integer;
Получить размер параметра valuename текущего ключа в байтах. Если - при ошибке. Для строкового параметра размер учитывает в размере и один байт для #0, завершающего строку .
function getdatatype(const valuename: string): tregdatatype;
Получить тип текущего ключа.
procedure getkeynames(strings: tstrings);
Заполняет указанный strings списком под ключей текущего ключа. Применяется для построения программ просмотра реестра или в том случае, когда количество подключей неизвестно. Например, одна из моих программ создает в одном из ключей несколько подключей с одинаковой структурой, но их количество заранее неизвестно (настройки пользователей).
Возвращает true, если текущий ключ имеет подключи и false в противном случае
function keyexists(const key: string): boolean;
Возвращает true, если ключ key существует. Полезная функция, рекомендуется применять ее перед открытием ключей.
function loadkey(const key, filename: string): boolean;
Создает ключ key и загружает в него данные из файла с именем filename. Полезно при написании инсталляторов. Возвращает true при успешном выполнении.
procedure movekey(const oldname, newname: string;
delete: boolean); Копировать или переименовать ключ. В любом случае копирует все из ключа oldname в newname (со всеми подключами). После копирования анализируется delete, и если он true, то ключ oldname уничтожается со всем содержимым. Лично у меня не было потребности в применении данной функции - она не требуется программ и предначначена для построения редакторов реестра
function openkey(const key: string; cancreate: boolean): boolean;
Очень важная функция - с нее начинается работа с ключом. key - имя открываемого ключа. Если ключ с указанным именем не найден и cancreate=true, то производится попытка создать ключ с указанным именем. Возвращает признак успешности открытия ключа, его обязательно следует анализировать.
function openkeyreadonly(const key: string): boolean;
Тоже, что и openkey, но открытие идет в режиме "только чтение" Внимание !!!!!! Все функции типа read** при вызове генерируют исключение, если параметр не найден. Это исключение следует отлавливать при помощи try except или проверять наличие параметра при помощи valueexists перед его чтением.
function readbinarydata(const name: string; var buffer; bufsize: integer): integer;
Читает значение параметра с именем name текущего (открытого) ключа в buffer размером bufsize.
function readbool(const name: string): boolean;
Считать значение параметра с именем name типа boolean function
readdate(const name: string): tdatetime;
Считать значение параметра с именем name типа дата
function readdatetime(const name: string): tdatetime;
Считать значение параметра с именем name типа дата-время
function readtime(const name: string): tdatetime;
Считать значение параметра с именем name типа время
function readfloat(const name: string): double;
Считать значение параметра с именем name типа double
function readinteger(const name: string): integer;
Считать значение параметра с именем name типа integer
function readstring(const name: string): string;
Считать значение параметра с именем name типа string
function registryconnect(const uncname: string): boolean; Подключить сетевой реестр машины uncname (формат: сетевое имя машины). Перед вызовом этой функции программа должна установить rootkey в значение hkey_users или hkey_local_machine. При успешном соединении и открытии удаленного реестра его rootkey ставится в заданное перед вызовам значение свойства rootkey и возвращается true.
Переименовать параметр текущего ключа с именем oldname в newname.
function replacekey(const key, filename, backupfilename: string): boolean;
Заменить место хранения ключа. Обычно ключи хранятся в базовом файле реестра, нот вызовом данной функции можно задать в качестве места хранения ключа отдельный файл с именем filename (его следует предварительно создать при помощи savekey). При каждой перезагрузке компьютера ключ key будет загружаться значениями, считываемыми из файла этого файла filename,т.е. по сути мы имеет дело с ульем (hive) в терминологии windows nt. Определение: Улей - часть реестра (его ячейка). Улей является дискретным набором ключей, подключей и параметров, который находится вверху иерархии реестра. Улей поддерживается одиночным файлом. backupfilename - имя резервной копии, которая создается перед перезаписью данных ключа key. Если кого интересуют подробности, то следует почитать книгу по реестру windows nt, главы типа "Ульи и файлы" и "Целостность и восстановление улья в реестре". При разработке практических приложений я не разу не применял этот вызов.
function restorekey(const key, filename: string): boolean;
Открывает указанный ключ и перезаписывает его данные и подключи данными из файла filename.
function savekey(const key, filename: string): boolean;
Сохраняет все параметры указанного ключа и всех его подключей в файле filename. Может применяться совместно с loadkey и restorekey для создания и восстановления ключей реестра.
function unloadkey(const key: string): boolean;
Удалить улей key из реестра.
function valueexists(const name: string): boolean;
Проверить, существует ли в текущем ключе параметр с именем name. Весьма полезная функция, т.к. чтение несуществующего параметра приводит к исключительной ситуации
procedure writebinarydata(const name: string; var buffer; bufsize: integer);
Записать в параметр с именем name данные из буфера buffer размером bufsize. Если параметр существовал, то он будет перезаписан. Если параметр не существовал, то он будет создан. Это справедливо и для всех последующих процедур записи параметров
Остальные процедуры записи - writebool, writecurrency,writedate,writedatetime, writeexpandstring, writefloat, writeinteger, writestring, writetime имеют по два параметра - (имя ключа, значение ключа).
Ну вот, класс описали, теперь приведем парочку примеров.
Данный пример создает (если его не было) или открывает ключ реестра hkey_local_machinesoftwaretest и записывает в него два параметра типа boolean и integer
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо зайти на сайт под своим именем.