Вообщем предлагаю создать кунсткамеру самых нежданных глюков, багов и способов их "героического превозмогания" ...
Для затравки стоит кинуть довольно известную историю
Почта не ходит дальше 500 миль!
Добавлено спустя 1 час 14 минут 28 секунд:
"Как программа может укусить себя за хвост ?"
Как как... очень просто !
Например сегодня занимался именно тем, что "растаскивал программу и ее хвост "...
Этап первый "Вы понимаете что что-то не так... "
Вообщем в процессе была очередная чуть бессмысленная попытка настроить мой "Рыбный инспектор данных"
(Для серьезного применения он хронически не годится, а для экспериментальной разработки, куда лень делать что-то более сложное бесхозный-код вполне можно утилизировать )
Вообщем умаявшись перемешаться по все более длинному списку с помощью одного только скролбара задумал я "изобрести колесо" то бишь давить управление колесиком мыши . Сказано сделано ! Обработчик несмотря на "приступ ночного арифметического кретинизма " написан и даже как-бы работает ... Добавил для комплекта управление стрелками и завалился досыпать... ну да "на то оно и утро !"
Стоял бодрый бодрый... кхым-кхым .. полдень ... за окнами порхали тучи и облака ... а я усиленно пытался понять..
КАКОГО ЧЕРТА !
Этап второй: "Пришел увидел ... и ушел ... "
... нет вроде работает и почти не падает .. но почему при "медленной перемотке" все "идет по плану", а при быстрой "упор" наступает раньше чем кончается список ... После примерно половины литра черного как негр в шахте чая ... взялся за отладку снова ... и обнаружил ... что значение позиции скролбара "в военное время" все равно равно нулю ...
И тут я начал понимать, что я уже совсем ничего не понимаю... и решил более пристально присмотреться к коду "сборщика" моего "псевдо инспектора "(как помните он состоит из обычных контролов ) а там у меня кроме прочего есть варианты полей с "само заполнением" и стоит... ЧТО ЧТО ?! Упс ! ...защита от повторного входа в "сборщик" до его штатного завершения . Дальше понятно ? При "медленном и чинном" скролировании все нормально, а при быстром часть вызовов "догоняет и перегоняет" и благополучно пропускается . Но заметно это только при "упоре в нуль".
Этап третий: "Уроборос уроборосом вышибают "
Но все это изрядная скука, а главный прикол в эсклюзивном способе "срочного превозмогания".
Не долго думая я повесил в обработчик изменения состояния сколбара запуск ... таймера который через 50 мс проверяет флаг "не беспокоить " и если он поднят запускает сам себя на следующие 50мс и только "дождавшись свободы" запускает "сборщик" (который снова поднимает флаг "не беспокоить " на время своей работы ) . Короче почти "принцип барона Мюнхаузена" .