Sergey_Demchuk

Silver Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Цитата: reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey('SYSTEM\CurrentControlSet\Data', false); Не особо хороший тон. Во первых это что дата лицензии на всю машину и всех пользователей? Опять не понимаю. | Ну это я так, не всю ветку написал, там еще подключи есть. Суть программы в двухсловах В реестре в некоей ветке есть значение REG_BINARY типа ...00,d3,b6,95,15,20,00,0a,00,11.... В этом месте b6,95,15 записаны Дата,Месяц и Год. Мне надо их изменить на дату, отстоящую от сегодняшнего дня на 50 дней вперед. Для этого я получаю Дату и перевожу ее в текстовый формат Код: DateSeparator := '.'; Temp:=DateToStr(Date+55); AktDay:= Copy (Temp, 1, Pos('.',Temp)-1); | Далее перевожу дату в бинарный вид Код: IntDay:=IntToBin(StrToInt(AktDay),8); Maska:=IntToBin(250,8); | Далее идет функция, которая делает то же что и 11111010 XOR 00010111, пришлось делать написание функции, ибо 11111010 и 00010111 (IntDay и Mask) находятся в переменных текстового типа. Уверен все можно и попроще намного сделать, но пока вот так получилось. Ну а далее то что получилось надо из двоичного вернуть в HEX и вернуть в реестр вместо b6. Код: HexDataDay:= BinToHex (IntDay); FillChar(Buf, SizeOf(Buf), 0); reg:=TRegistry.Create; reg.RootKey:=HKEY_LOCAL_MACHINE; reg.OpenKey('SYSTEM\CurrentControlSet\Data', false); REG.ReadBinaryData('Data', Buf, SizeOf(Buf)); ii:=1; for ii:=1 to 255 do begin if ((Buf[ii]=#$00) and (Buf[ii+1]=#$d3)) then Buf[ii+3]:=HexDataDay; //buf[7]:=#$E9; end; | Вот так в двух словах |