Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 73
от 18.07.2005, 10:40

Администратор:Калашников О.А.
В рассылке:Подписчиков: 109, Экспертов: 22
В номере:Вопросов: 1, Ответов: 6


Вопрос № 23401: Здравствуйте, ув.! 1) скажите пожалуйста в чем разница между режимами отладки Step Over и Trace into? 2) Где найти все коды клавиш клавиатуры?...

Вопрос № 23.401
Здравствуйте, ув.!
1) скажите пожалуйста в чем разница между режимами отладки Step Over и Trace into?
2) Где найти все коды клавиш клавиатуры?

Приложение:

Отправлен: 12.07.2005, 14:06
Вопрос задал: Стомов Евгений (статус: Посетитель)
Всего ответов отправлено: 6

Отвечает: Jadd
Здравствуйте, Стомов Евгений!
Step Over проходит только по твоему листингу без "захода" в вызываемые процедуры. Удобно, когда все остальное работает, но не ясно почему именно в этой функции возникает проблема. Trace Into позволяет во время прохода по коде заходить внутрь кода вызываемой функции. Удобно, когда мы точно не знаем как работает код или что вернет на функция, или посмотреть логику работы функции при тех или иных ситуациях.
---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Студент)
Отправлен: 12.07.2005, 14:28
Оценка за ответ: 5
Комментарий оценки:
Спасибо!

Отвечает: Ayl
Здравствуйте, Стомов Евгений!

Step Over - отладка без входа в процедуру/функцию
Trace into - отладка с входом в процедуру/функцию

Т.е. в первом случае процедура/функция не трассируется и выполняется просто как единый оператор. Во втором случае происходит обращение к подпрограмме столько раз, сколько раз она упоминается в операторе.

Например, пусть есть оператор:

y := F1 (x) + F2 (x) + F3 (F1 (F2 (x)));

где F1, F2 и F3 - функции, определенные программистом.

Тогда, если использовать Step Over, то будет вычислено значение y и ты увидешь только результат.
Если же ты будешь использовать Trace into, то (т.к. порядок вычисления - слева направо), то сначала будет выполнен вход в функцию F1 с параметром x, после трассировки этой функции отладчик вернется на эту же строку программы и будет выполнен вход в функцию F2 с параметром x, после трассировки снова будет выполнен вход в функцию F2 с параметром x, она снова будет оттрассирована и результат (обозначим его как r2) будет передан в качестве параметра функции F1. Будет произведена трассировка функции F1 с параметром r2 и получен результат r1. Теперь будет произведена трассировка функции F3 с параметром r1. И только после этого будет вычислено значение переменной y и управление будет передано следующей команде.
---------
Трудное - то, что можно сделать немедленно. Невозможное - то, для выполнения чего требуется немного больше времени
Ответ отправил: Ayl (статус: Профессор)
Отправлен: 12.07.2005, 14:49
Оценка за ответ: 5
Комментарий оценки:
Спасибо!

Отвечает: SergeAV
Здравствуйте, Стомов Евгений!
По вопросу 2) посмотри здесь
http://www.borlpasc.narod.ru/docym/Faronov/gl13/gl13_1.html
---------
Главное, чтобы костюмчик сидел!
Ответ отправил: SergeAV (статус: 10-ый класс)
Отправлен: 12.07.2005, 16:34
Оценка за ответ: 4
Комментарий оценки:
Спасибо за ссылочку на интересный сайт!

Отвечает: Витомский Вадим Викторович
Здравствуйте, Стомов Евгений!
1) Режим Step Over не входит в тела подпрограмм, тогда как Trace Into выполняет вхождение во все процедуры и функции, позволяя более точно обнаружить место ошибки.
2) Если используется функция ReadKey, то см. приложение (печатает все нажатые клавиши вместе с кодами, выход из программы по клавише <Esc>)

Приложение:

Ответ отправил: Витомский Вадим Викторович (статус: 1-ый класс)
Отправлен: 12.07.2005, 16:57
Оценка за ответ: 5
Комментарий оценки:
Спасибо!

Отвечает: sir henry
Здравствуйте, Стомов Евгений!
1) Примерно так:
Step Over (Трассировка без захода в подпрограммы)
Выполняет очередные операторы программы, соответствующие одной строке текста. Трассировка подпрограмм не производится - подпрограммы рассматриваются просто как один оператор.
Trace Info (трассировка с заходом в подпрограммы)
То же самое, но но вместе с основной программой просматриваются и подпрограммы.
2)Коды клавиш Вы можете найти не отходя от кассы написав такую программу:
Program KeyCodes;
Uses Crt;
var
ch: char;
Begin
While ch<>#27 do
Begin
ch:=ReadKey;
WriteLn(ch, ' = ', Ord(ch));
End;
End.
Это что касается алфавита и цифровых клавиш. У служебных клавиш, типа стрелки, при первом вызове ReadKey выдаст 0, а при втором код клавиши. Т.е. программу тогда нужно дополнить так:
ch:=ReadKey;
If ch=#0 Then
ch:=ReadKey; {Т.е. вызвать функцию повторно}
******************************************
Если Вам нужны сканкоды клавиш (что в некоторых случаях предпочтительнее), то можно использовать такую функцию:
Function ReadScanCode: word;
var
r: Registers;
Begin
r.ah:=0;
Intr($16, r);
ReadScanCode:=r.ax;
End;
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 12.07.2005, 19:10
Оценка за ответ: 5
Комментарий оценки:
Спасибо!
Сейчас попробую сделать, что Вы написали.

Отвечает: Master135
Здравствуйте, Стомов Евгений!
Значится так Step Over будет перескакивать через процедуры и функции при этом выполняя их но не отображая пошагово, а Trace Into будет заходить во все вышеуказанные процедуры и функции при этом выполняя их пошагово.
Коды клавиш можно узнать там http://www.rvsn2.narod.ru/download/code.zip
Ответ отправил: Master135 (статус: 6-ой класс)
Отправлен: 12.07.2005, 22:51
Оценка за ответ: 5
Комментарий оценки:
Спасибо!


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.pasplus
Отписаться
Вспомнить пароль

В избранное