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


KiberKot   (2006-04-26 15:50:00) [41]

Ну про [1] [3] понятно, там будет работать не за счет исправления and на =
а за счет сокращения алгаритма  
f diks [DIK_space] and $80 <> 0 then begin - сначала вычисляет [DIK_space] and $80
, а потом сравнивает с 0.
В [3] сразу сравнивает два значения.

А вот что будет, если нельзя две проверки в одну вместить, пример
if (x<0) and (x>640) то как тогда писать and или =


Don Nikola   (2006-04-26 15:49:00) [42]

2Cash:
Я не успеваю ответить, а ты новый вопрос задаешь ;)

>test - это оператор или макрокоманда?

Это команда проца, если мне не веришь возьми дебагер с http://www.ollydbg.deи посмотри во что delphi код превращает. Довольно часто бывает менее "правильный" текст на delphi компилится в неоптимальный код.

>Какие числа в себя включает маска $80?
>(это не придирки или чего то там, это направление к "верному" решению)

Если я правильно тебя понял, то $80-$FF 128-255


Don Nikola   (2006-04-26 15:43:00) [43]

2Cash:
>Это где это and - это команда процессора?
>(надо бы не приператься, а точно указать в какой из семантических
>конструкций слово and является командой процессора)

and - это команда всех x86.
паскаль, да и другие языки обычно преобразуют твой код и как вышеуказанно if ... and ... преобразовывается в другие команды.
Если же написать x:=x and $80 то в асме получиться and al,$80.
Более подробно о команда цпу можно посмотреть http://www.agner.org/assem/и на intel.com там не помню где куча pdf'ов с описанием процев и их команд лежала.
Для изучения команд 386 можно взять с http://www.whitetown.com/ru/ng/index.php3?lang=1&what=6TechHelp!6


Cash   (2006-04-26 15:41:00) [44]

KiberKot ©   (26.04.06 15:32) [31]:
Вот именно! and на 100% это and только в асме.
В Делфе это побитовая операция.
(что быстрее вычитание, сравнение и проверка флага или операция с
моментальным занесением результата во флаг)
При этом в [1] производится ряд операций которые друг другу не нужны.

Don Nikola ©:
test - это оператор или макрокоманда?
Какие числа в себя включает маска $80?
(это не придирки или чего то там, это направление к "верному" решению)


KiberKot   (2006-04-26 15:32:00) [45]


> Cash ©

Ну вобще в ассемблере and используется, а он использует машинные команды


Don Nikola   (2006-04-26 15:31:00) [46]

2Cash:
P.S.:
x - byte
if (x and $80)=0 then ...
компилиться в test al,$80
if x=$80 then ...
компилиться в cmp al,$80
Твой выигрыш в производительности не от этого 100%.
P.P.S.:
Если в sdk help пишут "If an element's high bit is on, the key was down at the moment of the call" значит нужно именно старший бит пользовать, иначе иногда можно встретить такой неуловимый баг, что неделю просидишь.
P.P.P.S.:
Хороший у тебя препод, добрый. Другой бы за такой код в извращенной форме бы после занятий.


Cash   (2006-04-26 15:28:00) [47]

KiberKot ©   (26.04.06 15:19) [26]:
Хм-м, я опен учил своими двумя, без книжек.
(Я и товарищ Брежнев очень похожи, мы оба не читаем книг :)

А с Don Nikola © я бы не согласилися!
Это где это and - это команда процессора?
(надо бы не приператься, а точно указать в какой из семантических
конструкций слово and является командой процессора)


KiberKot   (2006-04-26 15:26:00) [48]

Mortem
Кстати про code.darthman.com, это ты там админиш, а то я вот незнаю куда
положить свою мега гамму для скачивания :)
ЗЫ а это только гаммаделам положено смайлики перевернутые рисовать ? (:


Mortem   (2006-04-26 15:20:00) [49]

Вполне нормально по Краснову читься, хотя примеры немного переделывать приходится...
А ваще, примеры можно брать тут: http://code.darthman.com(:


KiberKot   (2006-04-26 15:19:00) [50]


>  На GameDev

Но ты же говорл что ОГЛ знаеш, значит о чем то учил (логично ?)
А на GameDev я был и вот нашел три варианта, которые перечислил,
кстати Краснова ОГЛ уже фиг где найдеш , за тем фактом, что этой книге уже 6 лет

Если кто захочет сказать про книги, то давайте в тот топик


Cash   (2006-04-26 15:09:00) [51]

KiberKot ©   (26.04.06 14:47) [22]:
Нет, and не тормозит, а наобарот работает быстрее... е-если
к нему правильно приложить руки!
Операция в [1] полностью верна, так же как и верна операция
эквивалентности (=) в [3]. Но обе они нерациональны с точки зрения
организации алгоритма. (наминального быстродействия не будет)
Рационален подход с and, приделанным к нужному месту, я (как и мой
учитель в подобных ситуациях) сложу руки и промолчу о нем. Потаму как
это приложение слишком тревиально для простого объяснения, надо
догадаться.

ЗЫ: предпод за такие вопросы автоматы раздает, но за всю его практику
таким образом автоматы получили только двое или трое челов.

> Cash прикинь, я временно дезиртирую на OGL :)
И правильно, кстати! Посиди на опене, это кульная штука. :)

Вот по DirectX я бы тебе сразу сказал, а опен, я чёт не знаю, как говорится
Краснов, но ты же сам видел, примеры у него в Бобруйск. На GameDev сходи,
посмотри там в каталоге книг.


KiberKot   (2006-04-26 15:03:00) [52]


> Don Nikola ©

Ну в принципе логично.
А вот скажи мне Николна, ты книжки читаеш (OGL) ?


Don Nikola   (2006-04-26 15:00:00) [53]

2KiberKot:
AND это одна из комманд проца, которая выполняется за минимально возможное время. Если у человека программа тормозит из-за одного and, то он или великий гуру или не совсем понимает что у него написано.


KiberKot   (2006-04-26 14:47:00) [54]


> Don Nikola ©

Я чет не понял, and  тормозит или всетаки не тормозит ???


Don Nikola   (2006-04-26 14:37:00) [55]

>Cash
>(я понимаю, что это всего один And, но без него мой DInput класс стал
>работать чуть ли ни в 1,5 раза быстрее, а клавиши также отсекает)

Одно-тактовый and тормозит метод в полтора раза?! 8O
Да ты великий гуру программления познавший дзен.
Можно на сырцы посмотреть, а то может я столько в жизни пропустил и не знаю.


KiberKot   (2006-04-26 14:23:00) [56]

Вы бы мне про книгу ответили
Cash прикинь, я временно дезиртирую на OGL :)


KiberKot   (2006-04-26 14:18:00) [57]


> А чем отличается отрисовка и обновление экрана?

Отрисовкай я называю вычислении параметров картинки (обрезание и тд.)и
ее блитинг, а на обновлении экрана у меня производится вычесление координат
и отслеживание всех действий


KiberKot   (2006-04-26 14:14:00) [58]


> XProger ©   [13]
> KiberKot, учи булеву алгебру

А где про эту самую алгебру можно документации достать, я вобще про нее
в первый раз слышу


Mortem   (2006-04-26 14:13:00) [59]

А чем отличается отрисовка и обновление экрана?


KiberKot   (2006-04-26 14:12:00) [60]


> Cash ©  


> diks[DIK_space] = $80?

Ну а можно так AND-ы позаменять во всех циклах. Инпут работает нормально
, а вот вывод на экран тормозит, т.к. у меня для каждого объекта куча
циклов с проверками, и если на экране появляется много объектов, то
начинаются еормоза. Надобы циклы как нибудь ускорить.
А вобще, если я выведу 1 цикл на 100 элементов и 50 циклов по 2 элемента,
то какой способ будет быстрее ???? Я спросил из за того, что у меня в
отрисовке куча циклов для одних и техже элементов, и может
если я это все засуну в один, то будет побыстрее работать

ЗЫ вернее циклы у меня не в отрисовке, а в обновлении экрана


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

Наверх

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