ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



 

Часть 6

Глава 3. Небольшой пример
Если вам не терпится использовать Турбо отладчик TDW, но вы не относитесь к разряду тех людей, которые перед этим подробно изучат сначала все руководство, то в данной главе вы найдете достаточно информации для отладки своей первой программы. Когда вы изу
чите описанные здесь основные принципы, интегрированный интерфейс с пользователем и контекстную справочную систему, это позволит вам продолжить обучение самостоятельно. 
В данной главе описываются все основные средства Турбо отладчика TDW. После изучения примера программы TDDEMO (которую можно найти на дистрибутивном диске) вы увидите, как можно делать следующее: 
- запускать и останавливать программу;
- проверять содержимое переменных программы;
- просматривать сложные объекты данных, такие, как массивы и структуры;
- изменять значение переменных.
Примеры программ
Пример демонстрационной программы (TDDEMO) служит введением, с помощью которого вы сможете изучить две основные вещи, необходимые при отладке программ: как запускать и останавливать программу, и как анализировать переменные и структуры данных программы. 
Сама программа не представляют собой что-то действительно полезное, некоторые их части и структуры данных присутствуют исключительно ради демонстрации возможностей Турбо отладчика TDW. 
Демонстрационная программа позволяе вам ввести несколько строк текста, а затем подсчитать число введенных букв и цифр. При завершении работы программа выводит некоторую статистику по тексту, включая среднее число строк на строке и частоту использования к
аждой буквы. 
Убедитесь, что ваш текущий каталог содержит два файла, необходимых для демонстрации работы программы - TDDEMO.PAS и TDDEMO.EXE. 
Для запуска демонстрационной программы:
1. Убедитесь. что Windows работает в стандартном режиме или в улучшенном режиме 386 (TDW не работает в реальном режиме).
2. В менеджере программ Windows откройте программную группу, которая содержит Турбо Паскаль, и выберите пиктограмму Турбо Паскаля.
3. Выберите команду FileіOpen (ФайліОткрытие) и введите полный маршрут доступа к файлу TDDEMO.PAS.
4. Когда файл TDDEMO.PAS появится в окне Edit (Редактирование), для запуска TDW и загрузки демонстрационной программу выберите команду RunіDebugger (ВыполнениеіОтладчик). Если необходимо, Турбо Паскаль компилирует программу с включением в нее отладочной 
информации. 
TDW загружает демонстрационную программу, выводит начальный экран и позиционирует курсор на начале программы. 
 ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
 і=  File View Run Breakpoints Data Options Window Help              READYі
 іЙН[ю]НModule: TPDEMO file: TPDEMO.PAS (modified) 190ННННННННННННННННННН»і
 іє                                                                      і
 іє    (*** Program begins here ***)                                     Іі
 іє                                                                      ±і
 іє                                                                      ±і
 ієbegin { program }                                                    ±і
 іє   Init;                                                              ±і
 іє   Buffer := GetLine;                                                 ±і
 іє   while Buffer <> '' do                                              ±і
 іє   begin                                                              ±і
 іє      ProcessLine(Buffer);                                            ±і
 іє      Buffer := GetLine;                                              ±і
 іє   end;                                                               ±і
 іє   ShowResults;                                                       ±і
 іє   ParmsOnHeap;                                                       ±і
 іє end;                                                                 ±і
 іє                                                                      ±і
 іє                                                                      ±і
 іє                                                                      і
 іИІ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±Щі
 іХWatchesДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД2їі
 іі                                                                      іі
 іАДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩі
 іF1=HelpF2=BkptF3=CloseF4=HereF5=ZoomF6=NextF7=TraceF8=StepF9=RunF10=Menuі
 АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Рис. 3.1 Начальный экран при работе с программой TDDEMO
Оперативные клавиши: F1=Help - cправка; F2=Bkpt - точка останова; F3=Close - закрыть; F4=Here - здесь; F5=Zoom - переключение окон; F6=Next - дальше; F7=Trace - трассировка; F8=Step - шаг; F9=Run - выполнить; F10=Menu - меню. 
Основное меню (верхняя строка): Ё - системное меню; File - файл; View - обзор; Run - выполнение; Breakpoints - точки останова; Data - данные; Options - параметры; Window - окно; Help - справка. 
Данный экран состоит из основной строки меню, окон Module (Модуль) и Watches (Просмотр) и строки состояния.
Завершение работы и выход
Чтобы выйти из отладчика в любой момент и вернуться в операционную среду Windows, нажмите клавиши Alt-X. Если при работе с примером вы безнадежно "заблудились", нажатие клавиш Ctrl-F2 позволит вам перезагрузить программу и начать выполнение сначала. Одна
ко при нажатии данных клавиш не сбрасываются точки останова или просматриваемые величины. Чтобы сделать это, нужно воспользоваться клавишами Alt-F O (клавиши Alt-B D также позволяют удалить все точки останова, но иногда быстрее перезагрузиться с помощью 
клавиш Alt-F O). 
Получение подсказки
Когда вам понадобиться получить справочную информацию о текущем окне, для этого нажмите клавишу F1. Вы можете получить разнообразную информацию (на английском языке), проходя по системе меню и нажимая клавишу F1 (будет выводиться краткий перечень того, ч
то делает каждая команда). 
Использование Турбо отладчика TDW
Меню
В верхней части экрана показана строка меню. Для вывода меню с помощью данной строки, нажмите клавишу F10, используйте клавиши стрелок для выбора пункта меню, и нажмите клавишу Enter, или нажмите клавишу Alt в сочетании с первой буквой одного из пунктов 
меню. 
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
  Ё  File View Run Breakpoints Data Options Window Help     READY
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Рис. 3.2 Строка меню.
Нажмите клавишу F10. Обратите внимание, что при этом курсор исчезает из окна Module, а команда (Ё) главного меню становится выделенной. Нижняя строка экрана также изменяется, показывая, какие команды содержит системное меню (Ё). 
Для перемещения в системе меню используйте клавиши стрелок. При нажатии "стрелки вниз" раскроется меню для подсвеченного элемента. 
Если у вас есть "мышь" то с ее помощью также можно открывать меню, установив указатель на соответствующий элемент меню (команду) и нажав кнопку "мыши". 
Чтобы возвратиться на предыдущий уровень системы меню, нажмите клавишу Esc. Когда в главном меню подсвечен один из элементов меню, то нажатие клавиши Esc возвращает вас в окно Module, а главное меню становится неактивным. 
Строка состояния
В нижней строке экрана показаны соответствующие функциональные клавиши и выполняемые ими функции. 
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
 F1=Help F2=Bkpt F3=Close F4=Here F5=Zoom F6=Next F7=Trace F8=Step F9=Run F10=Me
 ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Рис. 3.3 Строка состояния
Эта строка (справочная строка или строка состояния) изменяется в зависимости от того, что вы вводите (команды меню, ответ на подсказку и т.д.). Например, нажмите клавишу Alt и удерживайте ее в таком состоянии одну или две секунды. Обратите внимание, что 
нижняя строка изменилась, и в ней показаны функциональные клавиши, которые вы можете использовать совместно с клавишей Alt. 
Теперь нажмите таким же образом клавишу Ctrl. Команды, показанные в нижней строке экрана, представляют собой сокращения команд локальных меню для текущей области окна. Они изменяются в зависимости от того, в каком окне и в какой области окна вы в данный 
момент находитесь. Далее мы расскажем об этом подробнее. 
Когда вы входите в систему меню, строка состояния снова изменяется и отражает функции подсвеченного в данный момент элемента меню. Для перехода в строку меню нажмите клавишу F10, затем стрелку вправо для выбора пункта File (Файл). В строке состояния тепе
рь говориться: "File oriented functions" (функции, ориентированные на работу с файлами). Намите клавишу Esc или выберите с помощью "мыши" окно Module, чтобы выйти из системы меню. 
Окна
Область окон занимает большую часть экрана. В окнах вы можете просматривать части программы (наблюдая их в различных окнах и областях). 
Работа начинается с вывода двух окон: окна Module (Модуль) и окна Watches (Просмотр). Пока вы не откроете другие окна или не измените (настроите) данные, эти окна будут полными. Это означают, что они заполняют весь экран без перекрытия. Новые окна автома
тически перекрывают существующие, пока вы по ним перемещаетесь. 
 ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
 іЁ  File View Run Breakpoints Data Options Window Help     READYі
 іЙН[ю]НModule: DOMINIMUM File: DOMINIMUM.PAS 3 НННННННН1Н[][]»і
 іє program DoNuthin;                                           і
 іє                                                             Іі
 іє begin                                                      ±і
 іє  end.                                                       ±і
 іє                                                             ±і
 іє                                                             ±і
 іє                                                             ±і
 іє                                                             ±і
 іє          Это окно Module                                    ±і
 іє                                                             ±і
 іє                                                             ±і
 іє                                                             ±і
 іє                                                             ±і
 іє                                                             ±і
 іє                                                             ±і
 іє                                                             ±і
 іє                                                             ±і
 іє                                                             і
 іИІ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±Щі
 іЪWatchesДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД2їі
 іі           Это окно Watches                                  іі
 іАДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩі
 іF1=HelpF2=BkptF3=CloseF4=HereF5=ZoomF6=NextF7=TraceF8=StepF9=R.і
 АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Рис. 3.4 Неперекрывающиеся окна Module и Watches
Заметим, что окно Module имеет двойную рамку и подсвеченный заголовок. Это означает, что данное окно является активным. Для перемещения в текущем окне вы можете использовать клавиши управления курсором, а также клавиши Home, End, PgUp и т.д.). Для перехо
да в другое окно нажмите клавишу F6. При этом активным становится окно Watches (оно будет иметь двойную рамку и подсвеченный заголовок). 
Для создания новых окон используйте команду меню ViewіStack (ОбзоріСтек). При выборе данной команды на окно Module накладывается окно Stack (Стек). 
Для удаления текущего окна нажмите клавиши Alt-F3. Если вы сделаете это сейчас, то окно Stack исчезнет. 
Турбо отладчик TDW запоминает последние закрытые окна, поэтому при необходимости вы можете их восстановить. Если вы случайно закрыли окно, нажмите клавиши Alt-W, чтобы перейти в меню Window (Окно). Нажмите U для выбора команды Undo Close (Отменить закрыт
ие) или используйте команду меню WindowіUndo Close (ОкноіОтменить закрытие). При этом вновь появится окно Stack. Чтобы восстановить последнее закрытое окно, вы можете также нажать клавиши Alt-F6. 
Меню Window (Окно) содержит команды, которые позволяют вам настраивать окна, уже имеющиеся на экране. Вы можете как перемещать окно по экрану, так и изменять его размер. (Для этого можно также использовать клавишу Ctrl-F5). 
Дл позиционирования текущего окна используйте команду меню WindowіSize/Move (ОкноіРазмер/Перемещение), затем используйте клавиши стрелок для позиционирования текущего окна (в данном случае окна Staсk) на экране. Для настройки размера окна нажмите клавишу
 Shift и (удерживая клавишу Shift в нажатом положении) одну из клавиш стрелок. Когда вы выберете нужную позицию и размер окна, нажмите клавишу Enter. 
Теперь для подготовки к следующему разделу удалите окно Stack (Стек), нажав клавишу Alt-F3. В зависимости от Перейдите к следующему разделу. 
Использование примера программы TDDEMO
Закрашенная стрелка (обозначается символом ) в левом столбце окна Module показывает, где Турбо отладчик остановил выполнение вашей программы. Если вы еще не запускали свою программу, стрелка находится на ее первой строке. Для трассировки одной исходной 
строки программы нажмите клавишу F7. Стрелка и курсор переместятся при этом на следующую выполняемую строку. 
Посмотрите на правую границу заголовка окна Module (Модуль). В ней показана строка, в которой находится курсор. Переместите курсор с помощью клавиш управления курсором (стрелки) вверх и вниз и обратите внимание на изменение номера строки в заголовке. 
Чтобы запустить программу на выполнение, пока она не достигнет строки 189, переместите курсор на эту строку, а затем нажмите клавишу F4. Программа TDDEMO выведет вам подсказку для ввода строки. Наберите несколько символов (ABC, пробел, DEF) и нажмите кла
вишу Enter. Теперь, если курсор находится на строке 189, нажмите дважды клавишу F7 для выполнения еще двух строк исходного кода. Поскольку выполняемая вами строка представляет собой вызов другой процедуры (функции), то стрелка теперь позиционируется на п
ервой строке функции ProcessLine. Если вы будете продолжать нажимать клавишу F7, то будет выполняться функция ProcessLine, пока управление не вернется на следующую за вызовом строку (строка 192). Вместо этого можно нажать клавиши Alt-F8. При этом програм
ма остановится, когда текущая функция ProcessLine возвратит управление. Эту команду полезно использовать, когда вы не хотите медленно проходить по шагам всю функцию или процедуру. 
Если на строке 189 вы вместо клавиши F7 нажмете оперативную клавишу F8, то вместо перехода в функцию курсор переместится на строку 192. Клавиша F8 аналогична клавише F7: она также выполняет функции, но не переводит вас в исходный код функции. 
 ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
 іЁ  File View Run Breakpoints Data Options Window Help     READYі
 іЙН[ю]НModule: TDDEMO  file: TDDEMO.PAS 189НННННННННННН1Н[][]»і
 іє     while buffer <> '' do                                   і
 іє     begin                                                   Іі
 іє         ProcessLine(Buffer);                                ±і
 іє        Buffer := GetLine;                                  ±і
 іє     end;                                                    ±і
 іє     ShowResults;                                            ±і
 іє     ParmsOnHeap;                                            ±і
 іє   end.                                                      ±і
 іє                                                             ±і
 іє                                                             ±і
 іє                                                             ±і
 іє                                                             ±і
 іє                                                             ±і
 іє                                                             ±і
 іє                                                             ±і
 іє                                                             ±і
 іє                                                             ±і
 іє                                                             і
 іИІ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±Щі
 іХWatchesДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД2їі
 іі                                                             іі
 іАДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩі
 іF1=HelpF2=BkptF3=CloseF4=HereF5=ZoomF6=NextF7=TraceF8=StepF9=R.і
 АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Рис. 3.5 Программа останавилась после возврата из процедуры 
Чтобы выполнить программу до тех пор, пока не будет достигнуто заданное место, вы можете непосредственно указать функцию или номер строки, не перемещая курсор на данную строку курсор, а затем выполнить программу до этой точки. Чтобы задать метку, до кото
рой вы хотите выполнить программу, нажмите клавиши Alt-F9. Программа начнет выполнение и остановится в начале функции GetLine. 
Задание точек останова
Другой способ управлять остановкой программы состоит в использовании точек останова. Простейший способ задать точки останова заключается в использовании клавиши F2. Переместите курсор на строку 141 и нажмите F2. Турбо отладчик подсвечивает строку, показы
вая, что на ней установлена точка останова. 
Точки останова можно устанавливать и отменять также с помощью "мыши". Для этого нужно переместиться на первую или вторую позицию окна Module и нажать кнопку "мыши". 
 ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
 іЁ  File View Run Breakpoints Data Options Window Help     READYі
 іЙН[ю]НModule: TDDEMO  file: TDDEMO.PAS 141НННННННННННН1Н[][]»і
 іє    i  :  integer;                                           і
 іє    WordLen : Word;                                          Іі
 іє                                                             ±і
 іє  begin { ProcessLine }                                      ±і
 іє   Inc(NumLines);                                           ±і
 іє    i := 1;                                                  ±і
 іє    while i <= Length(S) do                                  ±і
 іє    begin                                                    ±і
 іє      { Пропустить не буквы }                                ±і
 іє      while (i <= Length(S)) and not IsLetter(S[i]) do       ±і
 іє       Inc(i);                                               ±і
 іє                                                             ±і
 іє      { Найти конец слова, обработать счетчики букв и слов } ±і
 іє      WordLen := 0;                                          ±і
 іє      while (i <= Length(S)) and IsLetter(S[i]) do           ±і
 іє      begin                                                  ±і
 іє        Inc(NumLetters);                                     ±і
 іє        Inc(LetterTable[UpCase(S[i])].Count);                і
 іИІ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±Щі
 іЪWatchesДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД2їі
 іі                                                             іі
 іАДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩі
 іF1=HelpF2=BkptF3=CloseF4=HereF5=ZoomF6=NextF7=TraceF8=StepF9=R.і
 АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Рис. 3.6 Точка останова на строке 141
Теперь нажмите клавишу F9 для выполнения вашей программы без прерывания. Экран переключается в режим экрана программы. Демонстрационная программа при этом работает и ждет, пока вы введете строку текста. Наберите abc, пробел, def и нажмите клавишу Enter. 
На дисплее появится экран Турбо отладчика TDW, а стрелка будет позиционирована на строке 141, где установлена точка останова, и прекратила свое выполнение программа. 
Полное описание точек останова, включая условные и глобальные точки останова, содержится в Главе 7. 
Использование окна Watches
В окне Watches (Просмотр) в нижней части экрана показываются значения заданных вами переменных. Например, чтобы увидеть значение переменной NumWords, переместите курсор на имя переменной на строке 164 и выберите команду Watch (Просмотр) локального меню о
кна Module. Можно также использовать сокращенный вариант - клавиши Alt-F10 и клавиши Ctrl-W (строка состояния). Это сокращенный вариант команды локального меню. 
Кроме того можно позиционироваться на Ctrl-W в строке состояния и нажать кнопку "мыши". 
 ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
 іЁ  File View Run Breakpoints Data Options Window Help     READYі
 іЙН[ю]НModule: TDDEMO  file: TDDEMO.PAS 164 ННННННННННН1Н[][]»і
 іє         IncLetterTable(UpCase(S[i])].Count;                 і
 іє         if WordLen = 0 then                                 Іі
 іє           Inc(LetterTable[UpCase(S[i])].FirstLetter;        ±і
 іє           Inc(WordLen);                                     ±і
 іє       end;                                                  ±і
 іє                                                             ±і
 іє       { Обработать счетчик слов }                           ±і
 іє       if WordLen > 0 then                                   ±і
 іє       begin                                                 ±і
 іє         Inc(NumWords);                                      ±і
 іє         if WordLen <= MaxWordLen then                       ±і
 іє           Inc(WordLenTable[WordLen]);                       ±і
 іє       end;                                                  ±і
 іє     end; { while }                                          ±і
 іє  end; { ProcessLine }                                       ±і
 іє                                                             ±і
 іє  function GetLine : BufferStr;                              і
 іИІ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±Щі
 іЪWatchesДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД2їі
 ііNumWords                2 ($2) : WORD                        іі
 іАДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩі
 іF1=HelpF2=BkptF3=CloseF4=HereF5=ZoomF6=NextF7=TraceF8=StepF9=R.і
 АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Рис. 3.7 Переменная Паскаля в окне Watches
Переменная NumWords появилась теперь в окне Watches (Просмотр) в нижней части экрана, где указаны также ее тип (word) и значение. По мере выполнения программы Турбо отладчик TDW изменяет это значение и отражает текущее значение переменной. 
Анализ простых объектов данных программы на языке Паскаль
Когда вы останавливаете выполнение своей программы, существует много способов просмотра данных с помощью команды Inspect (Проверка). Это очень мощное средство позволяет вам анализировать структуры данных таким же образом, как если бы вы визуально наблюда
ли их при разработке программы. 
Команды Inspect (в различных локальных меню и в меню данных Data) позволяют вам наблюдать за любой заданной переменной. Предположим, вы хотите вглянуть на значение переменной NumLines. Переместите курсор обратно на строку 141 таким образом, чтобы он оказ
ался под одной из букв имени nlines и нажмите клавиши Ctrl-I. При этом будет выведено окно Inspector (Проверка). 
 ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
 іЁ  File View Run Breakpoints Data Options Window Help    PROMPTі
 іЪД[ю]ДModule: TDDEMO  file: TDDEMO.PAS 141ДДДДДДДДДДДДДДДДДДДДїі
 іі    i  :  integer;                                           іі
 іі    WordLen : Word;                                          іі
 іі                                                             іі
 іі  begin { ProcessLine }                                      іі
 іі   Inc(NumLines);                                           іі
 іі    i := ЙInspecting NumLinesНН3Н[][]НН»                   іі
 іі    whileє@77D1:003E                     є                   іі
 іі    beginєWORD±±±±±±±±±±±±±±±±±±±±±1±($1)є                   іі
 іі      { ПИНННННННННННННННННННННННННННННННј                   іі
 іі      while (i <= Length(S)) and not IsLetter(S[i]) do       іі
 іі       Inc(i);                                               іі
 іі                                                             іі
 іі      { Найти конец слова, обработать счетчики букв и слов } іі
 іі      WordLen := 0;                                          іі
 іі      while (i <= Length(S)) and IsLetter(S[i]) do           іі
 іі      begin                                                  іі
 іі        Inc(NumLetters);                                     іі
 іі        Inc(LetterTable[UpCase(S[i])].Count);                іі
 іАДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩі
 іЪWatchesДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД2їі
 ііNumWords                2 ($2) : WORD                        іі
 іАДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩі
 іF1=HelpF2=BkptF3=CloseF4=HereF5=ZoomF6=NextF7=TraceF8=StepF9=R.і
 АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Рис. 3.8 Окно Inspector
В первой строке окна проверки вам сообщается имя переменной, вторая строка показывает ее показывает ее адрес в памяти. В третьей строке сообщается, какой тип данных хранится в переменной NumLines (это тип Паскаля word), и выводится текущее значение данно
й переменной. 
Теперь, проверив значение этой переменной, нажмите клавишу Esc для того, чтобы закрыть окно проверки Inspector. Для этого (как и во всех других окнах) можно также воспользоваться клавишами ALt-F3 или закрыть его с помощью "мыши". 
Давайте рассмотрим, что вы в действительности здесь сделали. Нажав Ctrl, вы выбрали сокращенный вариант команд локальных меню в окне Module. Нажатие I задало команду Inspect (Проверка). 
Для проверки элемента данных, который не виден в окне Module, выберите команду локального меню DataіInspect (ДанныеіПроверка). Выводится диалоговое окно, где вы можете ввести имя переменной, которую требуется проверить. Наберите имя LetterTable и нажмите
 клавишу Enter. Появляется окно проверки, где выводится значение LetterTable. Для просмотра (с помощью "прокрутки" окна) 26 элементов, входящих в LetterTable, используйте клавиши стрелок. В заголовке окна проверки выводится имя и тип проверяемых вами дан
ных, которые в точности соответствуют описанию этих данных, содержащемуся в исходном файле. В следующем разделе рассказывается о том, как можно проверять такие сложные объекты данных. 
    Анализ сложных объектов данных программы на языке Паскаль
Сложные (составные) объекты данных, такие, как массивы или структуры, содержат несколько компонентов. Переместитесь на четвертый элемент массива LetterTable (элемент, указанный индексом ['D']). Для вывода локального меню для окна Inspector (Проверка) наж
мите клавиши Alt-F10 и и выберите команду Inspect (Проверка). Появляется новое окно проверки, в котором показывается содержимое этого элемента массива. В этом окне проверки показано содержимое записи LInfoRec. 
 ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
 іЁ  File View Run Breakpoints Data Options Window Help     READYі
 іЪД[ю]ДModule: TDDEMO  file: TDDEMO.PAS 141ДДДДДДДДДД1ДДДДДДДДДїі
 іі    i  :  integer;                                           іі
 іі    WordLen : Word;      ХInspecting LetterTableДД3ДДД·      іі
 іі                         і@77D1:005A                  і      іі
 іі  begin { ProcessLine }  і['A']                 (1,1) і      іі
 іі   Inc(NumLines);       і['B']                 (1,0) і      іі
 іі    i := 1;              і['C']                 (1,0) і      іі
 іі    while i <= Length(S) і['D']                 (1,1) і      іі
 іі    begin                іЙInspecting LetterTable['D']Н4Н»   іі
 іі      { Пропустить не букіє$77D1:0066±±±±±±±±±±±±±±±±±±±±є   іі
 іі      while (i <= Length(ієCOUNT                  1 ($1) є   іі
 іі       Inc(i);           АєFIRSTLETTER            1 ($1) є   іі
 іі                          єІ°°°°°°°°°°°°°°°°°°°°°°°°°°°є   іі
 іі      { Найти конец слова,єLINFOREC                      є } іі
 іі      WordLen := 0;       ИННННННННННННННННННННННННННННННј   іі
 іі      while (i <= Length(S)) and IsLetter(S[i]) do           іі
 іі      begin                                                  іі
 іі        Inc(NumLetters);                                     іі
 іі        Inc(LetterTable[UpCase(S[i])].Count);                іі
 іАДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩі
 іЪWatchesДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД2їі
 ііNumWords                2 ($2) : WORD                        іі
 іАДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩі
 іF1=HelpF2=BkptF3=CloseF4=HereF5=ZoomF6=NextF7=TraceF8=StepF9=R.і
 АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Рис. 3.9 Просмотр записи
Когда вы поместите курсор на одно из имен элементов, тип данных этого элемента появится в нижней области окна проверки. Если один из этих элементов представляет собой, в свою очередь, составной объект данных, вы также можете дать команду проверки и еще б
олее углубиться в структуру данных. 
Для удаления окна Inspector (Проверка) и возврата в окно Module (Модуль) нажмите клавиши Alt-F3. (Клавиши ALt-F3 дают удобный способ удаления нескольких проверок сразу. Если вы нажмете Esc, то будет удалена только последняя проверка.) 
Изменение значений данныx в программе на языке Паскаль
Итак, вы теперь узнали, как можно просматривать данные в программе. Давайте теперь попробуем изменить значение элемента данных. 
С помощью клавиш со стрелками перейдите на строку 114 исходного файла. Поместите курсор на переменную NumLetters и для проверки ее значения нажмите клавиши Ctrl-I. После того, как будет открыто окно Inspector, нажмите для вывода локального меню окна Insp
ector клавиши Alt-F10. Нажмите клавишу C для выбора команды Change (Изменить). (Это можно сделать также непосредственно, нажав клавиши Ctrl-C.) Появляется подсказка (диалоговое окно), запрашивающая новое значение. 
 ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
 іЁ  File View Run Breakpoints Data Options Window Help     READYі
 іЪД[ю]ДModule: TDDEMO  file: TDDEMO.PAS 103ДДДДДДДДДДДДДД1ДДДДДїі
 іі                                                             іі
 іі  procedure Init;                                            іі
 іі  begin                                                      іі
 іі    NumLines := 0; NumWords := 0; NumLetters := 0;           іі
 іі    FillChar(LetterTable, ХНInspecting NumLettersН3Н[][]»  іі
 іі    FillChar(WordLenTable,є$77D1:0042                і    є  іі
 іі    WriteLn('Введите строкєLONGINT±±±±±±±±±±±±±6±($6)і    є  іі
 іі  end; { Init }           АНННННННННННННННННННННННННННННННј  іі
 іі          Й[ю]НEnter new value for numletters : LONGINTНННН» іі
 іі  procedurє Numletters + 4                                 є іі
 іі          є   OK      Cancel      Help                     є іі
 іі  functionє   ±±      ±±±±±±      ±±±±                     є іі
 іі  begin   ИННННННННННННННННННННННННННННННННННННННННННННННННј іі
 іі    IsLetter := UpCase(ch);                                  іі
 іі  end; { IsLetter }                                          іі
 іі                                                             іі
 іі  var                                                        іі
 іі    i : integer;                                             іі
 іАДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩі
 іЪWatchesДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД2їі
 ііNumWords                2 ($2) : WORD                        іі
 іАДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩі
 іEnter item prompted for in dialog title                        і
 АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Рис. 3.10 Диалоговое окно команды Change
Здесь вы можете ввести выражение Паскаля, при вычислении которого получается число. Наберите NumLetters + 4 и нажмите клавишу Enter. В окне Inspector теперь показано новое значение - 10. 
Для изменение элемента данных, который не виден в текущем окне Module, выберите команду DataіEvaluate/Modify (ДанныеіВычисление/Модификация) локального меню окна Module (Модуль). При этом будет выведено диалоговое окно, в котором вы можете ввести имя изм
еняемой переменной. Наберите имя NumLines и нажмите клавишу Enter. Нажмите дважды клавишу Tab, затем наберите 123 и нажмите Enter. 
 ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї
 іЁ  File View Run Breakpoints Data Options Window Help    PROMPTі
 іЪД[ю]ДModule: TDDEMO  file: TDDEMO.PAS 103ДДДДДДДДДДДДДД1ДДДДДїі
 іі                                                             іі
 іі  procedure Init;                                            іі
 іі  begin                                                      іі
 іі    NumLinea:Й[ю]ННННННННННННННEvaluate/ModifyННННННННННННН» іі
 іі    FillChar(єExpression                      і   Eval     є іі
 іі    FillChar(є NumLines                       і   ±±±±±±   є іі
 іі    Writeln('єДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДі   Cancel   є іі
 іі  end; { InitєResult                          і   ±±±±±±   є іі
 іі             є123 ($7B) : WORD                і   Help     є іі
 іі  procedure PєДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДі   ±±±±±±   є іі
 іі             єNew value                      ±і   Modify   є іі
 іі  function Isє 123                           і   ±±±±±±   є іі
 іі  begin      ИНННННННННННННННННННННННННННННННННННННННННННННј іі
 іі    IsLetter := UpCase(ch);                                  іі
 іі  end; { IsLetter }                                          іі
 іі                                                             іі
 іі  var                                                        іі
 іі    i : integer;                                             іі
 іАДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩі
 іЪWatchesДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД2їі
 ііNumWords                2 ($2) : WORD                        іі
 іАДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩі
 іEnter new value                                                і
 АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ
Рис. 3.11 Диалоговое окно команды Evaluate/Mоdify
Expression - выражение; Result - результат; New value - новое значение; Enter new value - введите новое значение. 
Этим мы завершаем краткое введение по использованию Турбо отладчика TDW для работы с программой Турбо Паскаля для Windows. Более подробно об этом рассказывается в описании примера сеанса отладки в Главе 15. 


Яндекс цитирования