Попередження й підказки. Запуск програми. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Попередження й підказки. Запуск програми.



При виявленні в програмі неточностей, які не є помилками, компілятор виводить підказки (Hints) і попередження (warnings).

Наприклад, найбільш часто виведеною підказкою є повідомлення про оголошену, але не використовувану змінну.

Variable… is declared but never used in…

 

Дійсно, навіщо повідомляти змінну й не використовувати її?

У табл. 11 наведені попередження, найбільше часто виведені компілятором.

Таблиця 11. Попередження компілятора.

Попередження Імовірна причина
Variable… is declared but never used in… Змінна не використовується
Variable… might not have been initialized. (Ймовірно, використовується не ініціалізована змінна) У програмі немає інструкції, яка привласнює змінній початкове значення

Запуск програми

Пробний запуск програми можна виконати безпосередньо з Delphi, не завершуючи роботу із середовищем розробки. Для цього потрібно з меню Run вибрати команду Run або клацнути на відповідній кнопці панелі інструментів Debug (рис. 31).

 

Рис. 31. Запуск програми із середовища розробки

 

Помилки часу виконання

Під час роботи додатка можуть виникати помилки, які називаються помилками часу виконання (run-time errors) або виключеннями (exceptions). У більшості випадків причинами виключень є невірні вихідні дані. Наприклад, якщо під час роботи програми обчислення швидкості перегони в поле Час увести 3.20, тобто для відділення дробової частини числа від цілої використовувати крапку, то в результаті натискання кнопки Обчислити на екрані з’явиться вікно з повідомленням про помилку (рис. 32).

Рис. 32. Приклад помилки часу виконання (програма запущена з Windows)

 

Причина виникнення помилки полягає в наступному. У тексті програми дробова частина числа від цілої відділяється крапкою. При введенні вихідних даних у поле редагування користувач може відокремити дробову частину числа від цілою крапкою або комою. Який із цих двох символів є припустимим, залежить від настроювання Windows.

Якщо в настроюванні Windows зазначене, що роздільник цілої й дробової частин числа – кома (для Росії це стандартна установка), а користувач під час роботи програми введе в поле редагування, наприклад, рядок 3.20, то при виконанні інструкції:

 

t = Strtofloat(Edit2.Text)

виникне виключення, тому що при стандартному, для Росії настроюванню Windows вміст поля Edit2 і, отже, аргумент функції strtofloat не є зображенням дробового числа.

Якщо програма запущена із середовища розробки, то при виникненні виключення виконання програми припиняється, і на екрані з’являється вікно з повідомленням про помилку і її тип. Як приклад на рис. 33 наведене вікно з повідомленням про те, що введена користувачем рядок не є дробовим числом.

Рис. 33. Приклад повідомлення про виникнення виключення (програма запущена з Delphi)

 

Після натискання кнопки ОК програміст може продовжити виконання програми (для цього треба з меню Run вибрати команду Step Over) або перервати виконання програми. В останньому випадку потрібно з меню Run вибрати команду Program Reset.

При розробці програми програміст повинен постаратися передбачити всі можливі варіанти некоректних дій користувача, які можуть привести до виникнення помилок часу виконання (виключення), і забезпечити способи захисту від них.

У лістингу В5 наведена версія програми Швидкість перегони, у якій реалізований захист від деяких некоректних дій користувача, зокрема, програма дозволяє вводити в поле Дистанція (Editl) тільки цифри.

Внесення змін

Після декількох запусків програми Швидкість бігу виникає бажання внести зміни в програму. Наприклад, було б непогано, щоб після введення дистанції й натискання клавіші Enter курсор переходив у поле Час. Або якби в поля Дистанція й Час користувач міг ввести тільки цифри.

Щоб внести зміни в програму, потрібно запустити Delphi і відкрити відповідний проект. Зробити це можна звичайним способом, вибравши з меню File команду Open Project. Можна також скористатися командою Reopen з меню File. При виборі команди Reopen відкривається список проектів, над якими програміст працював останнім часом.

У лістингу В5 наведена програма Швидкість бігу, у яку додані Процедури обробки подій Onkeypress Для компонентів Edit1 і Edit2.

Слід звернути увагу на те, що для додавання в програму процедури обробки події потрібно у вікні Object Inspector вибрати компонент, для якого створюється процедура, потім на вкладці Events вибрати подію й зробити подвійне клацання в поле імені процедури. Delphi сформує шаблон процедури обробки події. Після цього можна вводити інструкції, що реалізують процедуру обробки.

Лістинг В5. Модуль програми Швидкість бігу після внесення змін

unit vrun1;

interfaceusesWindows, Messages, Sysutils, Variants, Classes, Graphics, Controls, Forms,Dialogs, Stdctrls;typeTforml = class(Tform) Editl: Tedit;Edit2: Tedit; Label1: Tlabel;Label2: Tlabel;Label3: Tlabel;Label4: Tlabel;Buttonl: Tbutton;Button2: Tbutton;procedure Button1Click(Sender: Tobject);procedure Button2Click(Sender: Tobject);procedure Editlkeypress(Sender: Tobject; var Key: Char);private{ Private declarations } public{ Public declarations } end;varForm1: Tform1;implementation{$R *.dfm)// натискання кнопки Обчислитиprocedure Tform1.Buttonlclick(Sender: Tobject);vardist: integer; // дистанція, метрівt: real; // час як дробовий числоmin: integer; // час, хвилиниsek: integer; // час, секундиv: real; // швидкістьbegin// одержати вихідні дані з полів уведенняdist: = Strtoint(Editl.Text); t: = Strtofloat(Edit2.Text);// попередні перетворенняmin: = Trunc(t); // кіл-у хвилин – це ціла частина числа tsek: = Trunc(t*100) mod 100; // кіл-у секунд – це дробова частина// числа t// обчисленняv: = (dist/1000) / ((min*60 + sek)/3600);// висновок результатуlabel4.Caption: = Дистанція: + Editl.Text + м + #13 + Час: + Inttostr(min) + хв + Inttostr(sek) + сек + #13 +Швидкість: + Floattostrf(v,fffixed,4.2) + км/година;end;// натискання кнопки Завершитиprocedure Tforml.Button2Click(Sender: Tobject);beginForm1.Close; end;// натискання клавіші в поле Дистанціяprocedure Tform1.Edit1Keypress(Sender: Tobject; var Key: Char);begin// Key – символ, відповідний до натиснутої клавіші.// Якщо символ неприпустимий, то процедура заміняє його// на символ з кодом 0. У результаті цього символ у поле// редагування не зявляється, і в користувача створюється// враження, що програма не реагує на натискання деяких// клавіш.case Key of0..9:; // цифра#8:; // клавіша <Back Space>#13: Edit2.Setfocus; // клавіша Enter// інші символи – забороненіelse Key: = Chr(0); // символ не відображатиend;end;end.

 

Після внесення змін проект слід зберегти. Для цього потрібно з меню File вибрати команду Save all.

 



Поделиться:


Последнее изменение этой страницы: 2021-12-15; просмотров: 36; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.252.140 (0.005 с.)