Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Нажатие двух клавиш


Страницы:   1 2 3 4

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 компилится в неоптимальный код.
;)


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо