![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: нет Всего: 61 |
Граждане, доброго времени суток
я вообще программирую на С++, но необходимость заставила использовать Delphi. И сразу возникла проблема: как заставить программу Windows (не DOS) остановить выполнениe до нажатия клавиши (нужно для отслеживания выполения рекурсивного алгоритма). В с++ есть прекрасная функция getch(), работающая и в DOS, и в консоли Win (правда, тоже не работающая в полноценном Win приложении). В обычном Pascal есть keypressed, которой нет в Delphi 7. Тут я сдаюсь и прошу помощи. Заранее багодарен P.S. Ногами за вопрос не бить -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
так приложение какое на дельфи консоль или гуи, если консоль то можно подыскать чтот типа GetKeybrdState если гуи то в кейпресс лезь
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: нет Всего: 61 |
Romikgy,
можно поподробнее у меня генерация перестановок идет по клику на кнопке. К чему привязать этот keypress, чтобы при каждой перестановке был стоп? Надоело ShowMessage использовать не по назначению -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Данная постановка вопроса противоречит концепции WinAPI.
Сделай выполнение очередного шага по нажатию на кнопку. И сиди - нажимай её Enter'ом или пробелом... |
|||
|
||||
| Kuvaldis |
|
||||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: нет Всего: 61 |
Упрощенно
рекурсивная функция, вызывается по клику на кнопке
Если не трудно, приведите примерчик, для данного случая Я хотел так: если включен CheckBox, то по шагам, иначе (как у меня без ShowMessage) только окончательный вариант. -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
||||
|
|||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
ни че нен понял -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 13 Всего: 158 |
что за ...?
используй для отладки отладчик! и ходи там по шагам сколько угодно. |
|||
|
||||
| Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: нет Всего: 61 |
dumb,
Программа для решения задачи о 8 ферзях. Генерация одного решения. Опционально нужно задать: по клику будет видно готовое решение, или пользователь сможет наблюдать решение задачи непосредственно в С++ на место ShowMessage ставим getch() Что в Delphi поставить???? Как средствами Delphi остановить выполение программы а потом по любому нажатию продолжить? -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Нельзя останавливать основной тред.
Это не консоль! |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 13 Всего: 158 |
а. сие не отладка таки...
![]() если ты делаешь гуевое приложение, то неплохо бы производить вычисления в отдельном потоке, с опциональной паузой в нужном месте. иначе придется извращаться.
немного поясню гневную реплику Snowy: такой вопрос некорректен применительно к gui-приложению - в нем есть некий цикл обработки сообщений, благодаря которому окошечки рисуются, двигаются, кнопки нажимаются итд. если ты остановишь основной поток в какой либо процедуре, то ничего из вышеперечисленного программа делать не сможет. |
|||
|
||||
| Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: нет Всего: 61 |
dumb,
Даже и не подозревал, что простая вроде бы программа (и проблема) могут меня смутить
Как я понял, это уже не для новичков. А мне, наверное, стоит удовлетвориться вызовом диалоговых окошек ShowMessage, чтобы процесс останавливался, и можно было видеть промежуточные результаты (неудобно, но...просто) -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Просто нужно разбить процесс на несколько процедур/функций.
Завести ещё одну кнопку, которая будет производить очередную порцию действий. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Kuvaldis, может воспользоватся консолью написанной на делфи.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Kuvaldis |
|
||||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: нет Всего: 61 |
обсуждение на RSDN
реализация функции Getch для GUI Автор Danchik
Snowy,
Не могли бы вы объяснить поподробнее на элементарном примере, например, поиск с возвращением рекурсивный, можно на словах, без кода, или отправить по ссылке, где почитать Просто из работающей функции нужно выходить, причем так, чтобы сохранялось текущее состояние P.S. Извините за назойливость, просто не люблю оставлять нерешенные и непонятные вопросы -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
||||
|
|||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 13 Всего: 158 |
||||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |