Professor_J.C.
29-12-2010, 22:24
Есть функция которая делает некоторые действия (какие, я думаю, неважно). Один из передаваемых ей параметров отвечает за прерывание её выполнения, т.е. если в функцию подать значение panic:=true то она завершится при первой же возможности. Вызов функции происходит при нажатии кнопки "BTN" (назовем её так). Остановка задумана повторным нажатием на эту же кнопку, т.е. при повторном нажатии вызывается эта же функция, но с параметром panic:=true.
Чудо заключается в следующем. При попытке остановить выполнение функции (повторное нажатие "BTN"), функция получает сигнал остановки и прерывает свое выполнение, происходит выполнение оставшихся команд обработчика кнопки "BTN", после чего программа ВНЕЗАПНО возвращается в функцию, при чем, не в начало, а в какую-то определенную строку в середине, и продолжает её выполнение до победного конца. Даже не знаю какую часть кода показывать в этом случае.
Весь код функции пересмотрен много раз и, даже, был заменен на тестовый цикл, но докопаться до сути глюка мне не удалось.
Думаю здесь либо что то логическое либо я упустил что-то важное в delphi...
Чудо заключается в следующем. При попытке остановить выполнение функции (повторное нажатие "BTN"), функция получает сигнал остановки и прерывает свое выполнение, происходит выполнение оставшихся команд обработчика кнопки "BTN", после чего программа ВНЕЗАПНО возвращается в функцию, при чем, не в начало, а в какую-то определенную строку в середине, и продолжает её выполнение до победного конца. Даже не знаю какую часть кода показывать в этом случае.
Весь код функции пересмотрен много раз и, даже, был заменен на тестовый цикл, но докопаться до сути глюка мне не удалось.
Думаю здесь либо что то логическое либо я упустил что-то важное в delphi...