![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Нажатие двух клавиш
KiberKot © (2006-04-25 17:48:00)Подскажите, как отследить нажатие двух клавиш вот в такой строке
if diks [DIK_space] and $80 <> 0 then begin
Cash (2006-04-26 16:26:00) [21]А бошка то у меня дырявая, я совсем забыл как записать бинарное число. :)
Don Nikola © (26.04.06 16:20) [51]:
Препод ко мне никакого отношения не имеет, как и я к нему. Он универскую
команду по шкодингу тренирует, а они 2-е и 3-и места расхватывают. :)
А мне к ним не охота! Вот писали бы они игрухи...! :)))
ЗЫ: А задачкой пожалуй займусь... :)
KiberKot (2006-04-26 16:26:00) [22]
> я как-то пропустил... что за книжка? сразу скажу ogl не
> занимаюсь, где взять не знаю ;)
А.. ну в этом случае тоже можно проехать :)
Don Nikola (2006-04-26 16:23:00) [23]2KiberKot:
я как-то пропустил... что за книжка? сразу скажу ogl не занимаюсь, где взять не знаю ;)
KiberKot (2006-04-26 16:22:00) [24]
> Просто так как то понтово выглядит! :)))
так круче ((x and h1010000000) = 0) :)))
Don Nikola (2006-04-26 16:20:00) [25]2Cash:
>только некоторые психи вроде меня и еще нескольких людей решаются на
>такого рода эксперименты.
Любитель нестандартных извращений ;) ok.
Есть генератор случайных чисел вида:
add x,AddVal
rol x,RolVal
xor x,XorVal
Например для байта:
function Rnd(X: byte): byte;
asm
add al,119
rol al,3
xor al,1
end;
Для слова:
function Rnd(X: word): word;
asm
add ax,23975
rol ax,3
xor ax,1
end;
Чем хороши эти два генератора? Они выдают максимальную последовательность. Первый 256 значений, второй 65536. Стандартный дельфевый меня не устраивает, так как при некотых значениях range и randseed он выдает значения которые случайными назвать сложно.
Почти на 99.9(9)% такой же есть и для dword.
Вот и задача для тебя и твоего преподавателя найти хоть один коэффициент для dword и сказать его мне или по крайней мере сказать как за адекватное время их находить.
Я этим занялся вчера и пока вижу только брутфорс с преварительно отсеченными 50-75% значений. Но так как коэффициенты будут 32bit, то все равно время слишком большое.
KiberKot (2006-04-26 16:19:00) [26]
> ЗЫ: А (x < 640) еще можно заменить на ((x and $0280) = 0)
> :)))
А че, с 16-ричными работает быстрее ???
Cash (2006-04-26 16:19:00) [27]Да не, ему по барабану.
Просто так как то понтово выглядит! :)))
Cash (2006-04-26 16:17:00) [28]ЗЫ: А (x < 640) еще можно заменить на ((x and $0280) = 0) :)))
KiberKot (2006-04-26 16:15:00) [29]
> > Don Nikola ©
Похоже ты книги не читаеш :) Ладно, тогда проехали (:
Cash (2006-04-26 16:11:00) [30]KiberKot © (26.04.06 16:05) [43]:
Это всегда авантюра, довольно времяемкое занятие.
А результаты получаются далеко не всегда!
Но если получаюся, то это просто куль!
KiberKot (2006-04-26 16:08:00) [31]
> Don Nikola ©
ты мне про книгу еще ничего не сказал (забыл наверно )
Cash (2006-04-26 16:06:00) [32]KiberKot © (26.04.06 16:01) [41]:
А ну тогда другое дело!
Удобнее всетаки (наверное) будет простая коньюнкция!
(x > 0)and(x < 640)
KiberKot (2006-04-26 16:05:00) [33]
> решаются на такого рода эксперименты.
ну и чем обычно эти эксперементы заканчиваются, может находите решения
побыстрее ?
Cash (2006-04-26 16:03:00) [34]Don Nikola © (26.04.06 15:59) [40]:
В принципе да. Ведь, можно сказать, все делают так как сказано в SDK, и
только некоторые психи вроде меня и еще нескольких людей решаются на
такого рода эксперименты.
KiberKot (2006-04-26 16:01:00) [35]
> Наверное?:if (x < 0)or(x > 640) then...
не, скорее так if (x>0) and (x<640)
Don Nikola (2006-04-26 15:59:00) [36]2Cash:
Что and, что >= разницы в результате нет. Но для понимания исходника лучше использовать то, что основано на sdk. Если там написано проверьте старший бит, то лучше так и делать, что бы потом не тратить пару минут на "а что здесь, собственно, происходит?"
Cash (2006-04-26 15:58:00) [37]KiberKot © (26.04.06 15:50) [35]:
> if (x<0) and (x>640) то
То есть выход за пределы? (смутило то, что X одновременно и меньше 0 и
больше 640!)
Наверное?:
if (x < 0)or(x > 640) then...
Don Nikola (2006-04-26 15:57:00) [38]2KiberKot:
Он не вичисляется и сравнивается, а совмещается в одну команду.
>А вот что будет, если нельзя две проверки в одну вместить, пример
>if (x<0) and (x>640) то как тогда писать and или =
То и будет, проверка-jump, проверка-jump.
Кстати, если нужно проверить равенство переменной небольшим значениям(0-255), то выгоднее писать if x in [1,2,3,4..8] then delphi там с битами начинает играть и получает весьма занятный код.
Cash (2006-04-26 15:53:00) [39]Don Nikola © (26.04.06 15:49) [34]:
> Это команда проца
Верю, ляпнул не подумавши. :)
> то $80-$FF 128-255
Да, 128 и выше. То есть вполне есть резон использовать логическую
операцию ">="
Don Nikola (2006-04-26 15:51:00) [40]>Довольно часто бывает более"правильный" текст на delphi компилится в неоптимальный код.
;)