Цитата(ninja @ 10.07.2009 19:29)
Появилась такая идея: что если первому адресу клавиатурного буфера присвоить последний адрес? т.е. при каждом попадании значения в буфер, он будет очищаться.
Прекрасная идея для любителей музыки типа "бип-бииииииип"
. Если твоя программа не успевает обрабатывать вводимую информацию, то буфер надо не уменьшать, а
увеличивать. В этом и состоит весь смысл буфера. Почему ты решл, что буфер - это вред? Типа придумали его, чтоб осложнять жизнь людям?
Но увеличение буфера тоже не выход. Если ты собираешься жать кнопку, пока оно не забьется - оно забьется обязательно
. Воспринимай сложности с буфером как признак того, что у тебя что-то не так. Тебе надо прогу свою менять. Я бы рекомендовал сделать так.. Когда читаешь символ - читай не один, а сразу все из буфера. И складывай их в свой собственный буфер. При этом ты можешь предусмотреть параметр количества, то есть вместо повторения разных кодов хранить число введенных символов. Например, если ты вводишь:
aaabbbccabcccccc
- а хранишь:
3a3b2c1a1b6c.
При этом программа может распознавать множественные символы и ускоряться - например, рисовать не каждый кадр, а через кадр (если, скажем, коэффициент превышает 10).
И даже если ты не хочешь настолько сильно все менять, то самое простое средство, это вставить чтение клавиатуры где-нить в середине рисования (либо повесить на прерывание, но это уже сложнее). Сделай процедурку, которая читает символ, и если он такой же, как предыдуший - просто сбрасывает его, а если новый - запоминает как введенный. И навставляй ее вызовы в рисование.
В подавляющем множестве ситуаций, когда тебе хочется влезть в систему (например, поменять буфер), это лучше сделать в рамках своей программы. Например, сделать свой собственный клавиатурный буфер (второй, то есть, над системным). О быстродействии машины особо не заботься, оно большое (если не иметь в виду графику, конечно)).
Добавлено через 2 мин. Да, еще: адреса переменных, хранящих начало и конец буфера, которые ты привел, мне что-то кажутся странными.. Но я мог это забыть.