Меню сайта
Форма входа

Категории раздела
Уроки по созданию игр [38]
Программирование игр разной сложности
Игровые алгоритмы [24]
Алгоритмы, которые уже реализованы для разных жанров игр
Графика [5]
Учимся работать с графикой в Делфи
Мультимедиа [3]
Работа с мультимедийными возможностями Делфи
Другие статьи [18]
Статьи не вошедшие не в один из разделов
Ошибки [4]
Всевозможные ошибки и пути их решения
Среда, 15.05.2024, 16:24
Приветствую Вас Гость

Статьи по программированию

Главная » Статьи » Ошибки

Поиск ошибок в коде

Поиск ошибок в коде



 



При разработке более менее больших и сложных игр, каждый из разработчиков вынужден сталкиваться с ошибками в программном коде. Порой эти ошибки допущены но невнимательности разработчика или его усталости.



Иногда с логической точки зрения код выглядит правильно, но должный результат все равно не достигается. А порой бывают случаи когда сама среда программирования ведет себя некорректно в определенных ситуациях. Ну и, собственно, бывали случаи когда компилятор просто не мог правильно скомпилировать (собрать и запустить) программу. В этом случае мне помогал банальный перезапуск среды программирования Delphi.



А теперь перейдем непосредственно к способам поиска собственных ошибок в коде, которые к сожалению не обнаружены компилятором. Лично я использую всего три способа. И именно о них мы сегодня поговорим.



Первый способ не всегда удобен, но тоже действенен. Среда программирования Delphi дает возможность ставить точки прерывания. Точка прерывания будет каждый раз останавливать выполнение программы, когда программа будет обращаться к той строке, на которой поставлена эта точка прерывания.



 





 



Ставиться точка прерывания левым кликам мышки в левой части от текста кода, где идет нумерация строк кода. При клике по номеру строки ставится красная точка (точка прерывания). Далее запускаем наш проект и в тот момент когда будет обращение к строке с точкой прерывания – выполнение проекта будет приостановлено, а также показана и выделена красным строка с точкой прерывания. Теперь при наведении курсора мыши на любую переменную или массив будет всплывать сообщение со значением этой переменной или массива, которые записаны в него именно в данный момент. Таким образом мы будем знать правильные ли там находятся данные или нет. Чтобы выполнение программы продолжилось нужно нажать клавишу «F9»Точек прерывания можно ставить сколько угодно. Но нужно учесть, что если точка прерывания стоит внутри цикла, то показ этой строки может быть зациклен, особенно если этот цикл выполняется по таймеру.



Второй способ позволяет просматривать значения любых переменных или массивов без приостановки работы нашей программы. Итак чтобы поставить переменную на прослеживание нужно выделить нужную перемену и выбрать в панели пеню что вверху: Run --> Add Watch. Далее написать имя переменной (хотя оно автоматически должно быть там прописано) и нажать кнопку «Ок». После этого запускаем нашу программу и следим за изменением данных в этом окошке.



 





 



Но среди недостатков данного метода стоит отметить то, что если значения меняются постоянно, то мы можем не увидеть изменений, ведь они будут моментально изменяться на новые. Да и вообще мы будем видеть лишь последние записанные значения в переменную на данном этапе времени. А также нужно окошко с данными располагать с края экрана, чтобы никакие окна не перекрывали его иначе все данные будут размыты и невидимы нам.



Третий способ – мой любимый и отличается от предыдущего лишь тем, что данные нужной переменной мы будем отображать не в других окнах, а непосредственно в окне нашей программы. Можно многими способами выводить (отображать) нужные данные во время ее выполнения. Допустим у нас есть некая переменная:



 



Var



Number:integer;



 



Нам нужно знать какие данные там хранятся в разные периоды времени. Удобнее всего выводить такие данные по таймеру. Поэтому такой компонент мы размещаем на форме и дважды кликаем на нем. А далее выбираем куда мы хотим отображать нужные значения этой переменной:



 



1)    Form1.Caption:=’Number=’+inttostr(number);



2)   Label1.Caption:=’Number=’+inttostr(number);



3)   Memo1.Lines.Clear; Memo1.Lines.Add( ’Number=’+inttostr(number) );



4)   Form1.Canvas.TextOut( 0,0,’Number=’+inttostr(number) );



 



При выводе данных на канву нужно иметь ввиду, чтобы эти данные выводились последними на нее, иначе какие-то картинки могут перекрыть их собой. И тогда мы их не увидим.



Если же наша переменная будет не типа integer, а типа string то писать inttostr() не нужно:



 




  1. Form1.Caption:=’Number=’+number;



 



Также рассмотрим вариант когда проследить нужно не одиночную переменную, а целый массив. Допустим у нас есть такой массив:



 



Var



Mas:array[1..10] of integer;



 



Отображать массив удобнее всего в цикле:



 



For i:=1 to 10 do



Form1.canvas.TextOut(i*15, 0, Inttostr(Mas[i]) );



 



Ну вот и все. Мы рассмотрели три способа поиска ошибок в исходном коде, которыми пользуюсь лично я. И, надеюсь, они помогут и Вам, так же как и мне. На этом все. Желаю всем удачи в разработке собственных игр. Удачи всем!



 



Источник: delgame.at.ua

Категория: Ошибки | Добавил: Armageddets (04.05.2014) | Автор: Поиск ошибок в коде
Просмотров: 1363 | Теги: отладка, делфи, Поиск ошибок в коде, исключения | Рейтинг: 1.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Наш опрос
Уроки по созданию каких игр Вам интересны?
Всего ответов: 167
Мини-чат
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0