- •Коренькова Татьяна Николаевна
- •Часть 2
- •Практическая часть
- •Типизированные файлы.
- •Нетипизированные файлы.
- •Библеотека graph
- •Практическая часть Основные графические операторы для построения изображений:
- •Процесс построения изображений с помощью графических процедур разбивается на отдельные этапы:
- •Пример программы построения графика функции.
- •Практическая часть
- •Практическое занятие №24. Изучение интегрированной среды разработчика.
- •Ход работы
- •1. Загрузите систему визуального программирования Delphi.
- •Закройте окно программы Forml, минимизируйте главное окно Delphi и создайте на рабочем диске папку с названием группы, а в ней папку, названную вашей фамилией. Снова активизируйте окно Delphi.
- •Сохраните созданную программу в своей папке.
- •6. Визуально ознакомьтесь со свойствами формы Left, Тор, Width и Height.
- •7. Исследуйте, как изменение значений свойств Left, Тор, Width или Height формы в окне ObjectInspector ведет к изменению расположения или размера формы.
- •8. Измените цвет фона формы.
- •Выполните программу еще раз (см. Пункт 3).
- •Вставьте в форму текстовое поле (объект типа Label) с текстом «Анкета студента».
- •12. Вставьте в форму объект типа Image (картинка).
- •13. Вставьте свою портретную фотографию с помощью свойства Picture (иллюстрация) объекта Imagel.
- •14. Наложите свою художественную фотографию на портретную, вставив в форму еще один объект типа Image.
- •15. Поэкспериментируйте со свойством Visible (видимость) двух изображений, каждый раз выполняя программу (см. Пункт 3).
- •16. Вставьте в форму кнопки для поочередного отображения наложенных одна на другую фотографий - два объекта типа Button с названиями Buttonl и Button2.
- •17. Запрограммируйте кнопку «Портретная фотография» так, чтобы после ее нажатия в форме появлялась портретная фотография.
- •18. Запрограммируйте кнопку «Художественная фотография» соответственно ее назначению (см. Пункт 17).
- •Запустите программу и убедитесь, что кнопки выполняют свои функции. Закройте окно программы «Анкета студента».
- •Создайте ехе-файл проекта
- •Практическое занятие №25 Создание простого проекта. Задачаобобменевалюты
- •Ход работы
- •1. Вставьте в форму два объекта типа RadioButton (переключатель), как показано на рис. 7.
- •2. Задайте начальное значение второго переключателя как активное.
- •16. Запустите программу и убедитесь, что переключатели выполняют предписанные им функции.
- •17. Запрограммируйте кнопку «Выход».
- •18. Запрограммируйте кнопку «Вычислить».
- •24. Создайте ехе-файл Вашей программы.
- •25. Закройте среду Delphi, запустите созданную программу и выполните вычисления для разных входных данных.
- •26. Продемонстрируйте созданную форму преподавателю. За- кончите работу.
- •Практическое занятие №26 Объявление класса, создание экземпляров класса.Задачатабулированияфункции Объекты Memo, MainMenu, PopupMenu, CheckBox, GroupBox. Программирование циклов
- •Ход работы
- •Загрузите среду визуального программирования Delphi.
- •Поменяйте заголовок (Caption) формы с «Forml» на «Табулирование функции» (без кавычек) и увеличьте размеры формы в вертикальном направлении.
- •Смените пиктограмму в левом Верхнем углу формы, указав конкретный файл с рисунком пиктограммы в поле значения свойства Icon (пиктограмма) формы.
- •21. Запрограммируйте команду «Табулировать».
- •Практическое занятие №27 Создание наследованного класса. Задачаобиржеценныхбумаг
- •Ход работы
- •8. В окне текста программы перед разделом implementation введите описание констант и переменных программы:
- •10. В окне текста программы после раздела implementation введите описание метода Refresh формы.
- •Сохраните выполненную на данный момент работу в своей папке.
- •Практическое занятие №28 Перегрузка методов. Задачаотелефонномсправочнике
- •Ход работы
- •8. Сохраните выполненную на данный момент форму в своей папке.
- •9. С помощью мыши задайте ширину столбцов таблицы, на- пример так, как показано на рис. 16.
- •10. Добавьте на форму главное меню и введите названия его команд, как показано на рис. 16 и рис. 17.
- •11. Создайте окно формы «о программе» (см. Рис. 18).
- •Сохраните работу и запустите проект на выполнение.
- •18. Добавьте на форму два объекта - стандартные диалоги Windows для открытия и сохранения файлов.
- •19. Запрограммируйте процедуры открытия и сохранения фай- лов телефонного справочника (команды главного меню «Прочитать из файла» и «Записать в файл»).
- •20. Напишите процедуру создания формы.
- •21. Напишите процедуру заполнения полей редактирования NewEdit.
- •22. Напишите процедуру заполнения комбинированного списка NewComboBox.
- •Сохраните работу, запустите программу, заполните таблицу данными и убедитесь в том, что программа правильно записывает на диск и считывает с диска файлы телефонных справочников.
- •Запрограммируйте команду главного меню «Сохранить изменения в списке записей».
- •Практическое занятие №29 Создание проекта с использованием кнопочных компонентов.
- •Ход работы
- •5. Дважды щелкните на первом таймере и запрограммируйте мигание сообщения «Обязательно нажмите на кнопку «Готово» после размещения рисунков!!» так:
- •6*. Введите описание глобальных переменных программы:
- •6**. Введите описания глобальных констант и переменных программы:
- •Аналогично запрограммируйте соответствующие события для перетягивания двух других рисунков.
- •Создайте еще один метод формы tForml — функцию ImagelnShape для проверки расположения рисунка (объекта Image) в середине некоторой геометрической фигуры (объекта Shape).
- •11*. Запрограммируйте кнопку "Готово", проверяющую правильность расположения рисунков в середине фигур и выводящую информационное окно с сообщением "Правильно!" или "Неправильно!":
- •11**.Запрограммируйте кнопку "Готово", проверяющую правильность расположения рисунков в середине фигур:
- •Сохраните программу и проект в своей папке.
- •Запустите программу. Перетягивайте мышью рисунки на середину соответствующих фигур.
- •Создайте ехе-файл программы и поупражняйтесь с ней.
- •Упражнения. Совершенствование проекта
- •Практическое занятие №31 Создание проекта с использованием компонентов ввода и отображения чисел, дат и времени. Калькулятор
- •Постановка задачи.
- •Ход работы.
- •Упражнения. Совершенствование проекта.
- •Практическое занятие №33 Разработка оконного приложения. Создание новых форм с меню, геометрическими фигурами, палитрой и со шкалой.
- •Практическое занятие №34 Разработка оконного приложения с несколькими формами. Разработка проекта Halfbottle.
- •Постановка задачи.
- •Ход работы
- •Упражнения. Совершенствование проекта.
- •Практическое занятие №35 Разработка многооконного приложения. Проект “Худой или полный?”.
- •Упражнения
- •Сообщения и коды ошибок
- •50. Do expected (Нуженоператор do).
- •54. Of expected (Требуется of).
- •55. Interface expected (Требуется интерфейсная секция).
- •57. Then expected (Требуется then).
- •58. To or downto expected (ТребуетсяТОили downto).
- •73. Implementation expected (Отсутствует исполняемая часть модули).
- •102. String constant expected (Нужнаконстантастроковоготипа).
- •106. Character expression expected (Предшествующее выражение должна иметь символьный тип).
- •161. Code generation error (Ошибка генерации кода).
- •162. Asm expected (Отсутствует зарезервированное слово asm). Ошибки, возникающие во время выполнения программ
- •Ошибки ввода-вывода
- •Критические ошибки
- •Фатальные ошибки
- •Литература
102. String constant expected (Нужнаконстантастроковоготипа).
103. Integer or real variable expected (Нужнапеременнаятипа INTEGER или REAL).Предшествующая переменная должна иметь целый или вещественный тип.
104. Ordinal variable expected (Нужна переменная порядкового типа). Предшествующая переменная должна иметь порядковый тип.
105. INLINE error (Ошибка в операторе INLINE). Оператор «<» не допускается в сочетании с перемещаемыми ссылками на переменные. Такие ссылки всегда имеют размер в слово.
106. Character expression expected (Предшествующее выражение должна иметь символьный тип).
107. Too many relocation items (Слишком много перемещаемых элементов). Размер таблицы перемещения файла .ЕХЕ превышает 64 Кбайта, что является верхним пределом в Турбо Паскале. Если Вы обнаружили эту ошибку, то это значит, что программа просто слишком велика для обработки компоновщиком Турбо Паскаля. Возможно также, что она слишком велика для выполнения в MS-DOS. В таком случае нужно выделить в программе основной раздел, который выполнял бы обращение к двум или более вспомогательным разделам с помощью процедуры ЕХЕС из модуля DOS.
108. Overflow in arithmetic operator (Переполнение при выполнении арифметического оператора). Результат предыдущей арифметической операции не лежит в диапазоне -2146483648… +2147483647. Исправьте операцию или используйте вещественные типы вместо целочисленных.
109. No enclosing FOR, WHILE or REPEAT statement (Нетоператоров, заканчивающихоператоры FOR, WHILE или REPEAT).Процедуры BREAK и CONTINUE не могут вызываться вне тела оператора цикла.
110. Debug information table overflow (Переполнение информационной таблицы отладки). Возможно, программа содержит более 65536 имен или 65536 строк. Отключите генерацию таблиц отладки директивой компилятора {SD-} или исправьте один или более модулей.
111. Ошибка с этим кодом не описана в версии 7.0 системы Турбо Паскаль.
112. CASE constant out of range (Константа CASE нарушает допустимые границы). Целочисленные константы оператора CASE должны находиться в диапазоне от -32768 до 32767.
113. Error in statement (Ошибкавоператоре). Данный символ не может быть первым символом в операторе.
114. Cannot call an interrupt procedure (Невозможно вызвать процедуру прерывания). Вы не можете непосредственно вызвать процедуру обработки прерывания.
115. Ошибка с этим кодом не описана в версии 7.0 системы Турбо Паскаль.
116. Must be in 8087 mode to compile this (Длякомпиляциинеобходимрежим 8087).Данная программа может быть скомпилирована только в режиме {SN+}. В состоянии {SN-} операции с типами SINGLE, DOUBLE EXTENDED и COMP не допускаются.
117. Target address not found (Указанный адрес не найден). Команда COMPILE / FIND ERROR в среде Турбо Паскаля (или поиск с помощью опции /F в командной строке компилятора ТРС.ЕХЕ) не обнаружила оператор, соответствующий заданному адресу.
118. Include files are not allowed here (Здесьнедопускаютсявключаемыефайлы).Раздел операторов должен целиком размешаться в одном файле.
119. No inherited methods are accessible here (В этом месте программы нет унаследованных методов). Вы используете зарезервированное слово INHERITED вне метода объекта или в методе, который не унаследован от родительского объекта.
120. Ошибка с этим кодом не описана в версии 7.0 системы Турбо Паскаль.
121. Invalid qualifier (Неверный квалификатор). Возможные причины сообщения:
Вы пытаетесь индексировать переменную, которая не является массивом;
Вы пытаетесь укачать поля в переменной, которая не является записью;
Вы используете в качестве указателя переменную, которая не является указателем.
122. Invalid variable reference (Недействительная ссылка на переменную). Предыдущая конструкция удовлетворяет синтаксису ссылки на переменную, но она не указывает адрес памяти. Возможно, Вы вызываете функцию-указатель, но забываете сослаться на результат с помощью знака.
123. Too many symbols (Слишком много символов). Программа или программный модуль содержат более 64 Кбайт символов. Если Вы компилируете программу с директивой {SD+}, то попробуйте отключить эту директиву или разбейте программу на несколько модулей.
124. Statement part too large (Слишком большой раздел операторов). Турбо Паскаль ограничивает размер раздела операторов, но величины примерно 24 Кбайта. Если Вы обнаружили эту ошибку, поместите части раздела операторов в одну или несколько процедур и вообще сделайте Вашу программу более структурированной.
125. Ошибка не этим колом не описана в версии 7.0 системы Турбо Паскаль.
126. Piles must be war parameters (Файлы должны передаваться как параметры-переменные). Вы пытаетесь передать процедуре или функции параметр-значение файлового типа. Параметры файлового типа должны быть параметрами-переменными.
127. Too many conditional symbols (Слишком много условных символов) .Недостаточно памяти для определения условных символов (слов, управляющих командами условной компиляции). Попытайтесь удалить некоторые символы или уменьшить их длину.
128. Misplacedconditionaldirective (Пропущена условная директива).Компилятор обнаружил директиву {$ELSE} или {$ENDIF} без соответствующих директив {$IFDEF},. {$1FNDEF) или {$IFOPT}.
129. ENDIF directive missing (Пропущена директива EHDIF). Исходный файл закончился внутри конструкции условной компиляции. В исходном файле должно быть равное количество директив {$IFxxx} и {$ENDIF}.
130. Error in initial conditional defines (Ошибкавусловныхопределениях).Исходные условные символы, указанные в опции OPTIONS/COMPILER / CONDITIONAL DEFINES являются недействительными. Турбо Паскаль требует нуля или более идентификаторов, разделенных пробелами, запятыми или точками с запятой.
131. Header does not match previous definition (Заголовок не соответствует предыдущему определению). Возможные причины сообщения:
заголовок процедуры или функции, указанный в интерфейсной секции, не соответствует заголовку в исполняемой части.
заголовок процедуры или функции, указанный с помощью опережающего описания FORWARD, не соответствует заголовку найденной далее одноименной процедуры или функции.
132. Critical disk error (Критическая ошибка диска). Но время компиляции произошла критическая ошибка диска (например, дисковод находится в состоянии “не готов”).
133. Cannot evaluate this expression (Нельзявычислитьданноевыражение).В выражении-константе или в отладочном выражении Вы пытаетесь использовать неподдерживаемые средства, например, я описании константы пытаетесь использовать функцию SIN или вызвать в отладочном выражении определенную пользователем функцию.
134. Expression incorrectly terminated (Некорректное завершение выражения). Контекстуально в данном месте программы должен быть конец выражения или оператора.
135. Invalid format specifier (Неверный спецификатор формата) .Используется неверный спецификатор формата или числовой аргумент спецификатора формата выходит за допустимые границы.
136. Invalid indirect reference (Недопустимая косвенная ссылка). Оператор пытается осуществить недопустимую косвенную ссылку. Например, Вы используете абсолютную переменную, базовая переменная которой в текущем модуле неизвестна, или используете программу типа INLINE, в которой делается ссылка на переменную, неопределенную в текущем модуле.
137. Structured variable are not allowed here (Здесь нельзя использовать переменную структурного типа). Делается попытка выполнить нал переменной структурного типа неподдерживаемую операцию. Например. Вы пытаетесь перемножить две записи.
138. Cannot evaluate without System unit (Нельзя вычислить выражение без модуля SYSTEM). Чтобы отладчик смог вычислить выражение, в файле TURBO.TPL должен содержаться модуль SYSTEM.
139. Cannоt access this symbol (Нет доступа к данному символу). Как только Вы скомпилируете программу, все множество ее символов становится доступным. Однако к отдельным символам (например, к переменным) нельзя получить доступ, пока Вы не запустите программу.
140. Invalid floating-point operation (Недопустимая операция с плавающей запятой). При выполнении операции с плавающей запятой произошло переполнение или деление на ноль.
141. Cannot compile overlay to memory (Нельзя выполнить компиляцию оверлейных модулей в память). Программа, использующая оверлейные модули, должна компилироваться на диск.
142. Procedure or function variable expected (Должна использоваться переменная процедурного типа). В этом контексте оператор получения адреса @ может использоваться только с переменной процедурного типа.
143. Invalid procedure or function reference (Недопустимаяссылканапроцедуруилифункцию).Возможные причины сообщения:
Вы пытаетесь вызвать процедуру в выражении;
процедура или функция, использующаяся в качестве параметра вызова другой процедуры или функции, должна компилироваться в состоянии {$F+} и не может описываться с помощью зарезервированных слов INLINE или INTERRUPT.
144. Cannot overlay this unit (Этот модуль не может использоваться в качестве оверлейного). Попытка использовать в качестве оверлейного модуля, который не был скомпилирован с директивой {$O+}.
145. Too many nested scopes (Слишком много вложений). В программе не может быть больше 512 вложений с не более чем 128 вложениями в каждом модуле. Вложениями считаются:
каждый модуль в предложении USES;
каждая вложенная запись в типе RECORD;
каждый вложенный оператор WITH.
146. File access denied (Отказано в доступе к файлу). Возможные причины:
Вы пытаетесь использовать файл с атрибутом "только для чтения” в качестве выводного файла;
Вы используете имя каталога вместо имени выводного файла.
147. Object type expected (Здесьдолженбытьтип OBJECT).Этот идентификатор должен принадлежать к типу OBJECT.
148. Local object types are not allowed (Нельзяобъявлятьлокальныеобъекты).Нельзя объявить объект в процедуре (функции).
149. VIRTUALexpected (Пропущено слово VIRTUAL).
150. Method identifier expected (Пропущен идентификатор инкапсулированного правила).
151. Virtual constructor are riot allowed (Конструктор не может быть виртуальным).
153. Destructor identifier expected (Пропущен идентификатор деструктора).
154. Fail only allowed within constructor (Обращение к стандартной процедуре FAIL может содержаться только в конструкторе).
155. Invalid combination of opcode and operands (Недопустимая комбинация хода команды и операндов). Код ассемблерной команды не может иметь такие операнды. Причины ошибки:
указано слишком много или слишком мало операндов для данной команды, например, INC АХ,ВХ или MOV АХ;
количество операндов правильное, но их типы или порядок следования не соответствуют данной команде, например, DEC 1, MOV AX, CL или MОV 1,АХ.
156. Memory reference expected (Отсутствуетадрес).Операнд ассемблерной команды не содержит адрес. Вероятно, Вы забыли выделить квадратными скобками индексный регистр.
157. Cannot add or subtract relocatable symbols (Нельзя складывать или вычитать перемещаемые символы). В ассемблерных выражениях обоими операндами в операциях сложения или вычитания могут быть только ссылки на константу. Идентификаторы переменных, процедур, функций и меток являются переметаемыми символами и не могут использоваться в качестве двух операндов одновременно в таких операциях. Если VAR -идентификатор переменной, a CONST - константы, то предложения MOV АХ, CONST+CONST и MOVE AХ, VAR+CONST будут правильными, в то время как выражение MOV AX, VAR+VAR Недопустимо.
158. Invalid register combination (Недопустимая комбинация регистров) .Допустимыми комбинациями индексных регистров являются [ВХ] , [ВР] , [SI], [DI] , [BX+SI], [BX+DI], [BP+SI] и [BP+DI] . Другие комбинации (например, [AХ] , [ВР+BХ] , [SI + DX]) недопустимы. Заметим, что локальные переменные размещаются на стеке и доступ к ним организуется через регистр BP. Ассемблер автоматически добавляет [ВР] в ссылках на такие переменные, поэтому в операндах типа LOCAL [BX], где LOCAL - локальная переменная, образуется недопустимая ссылка LOCAL[BP+BX] .
159. 286/287 instructions are not enabled (Недоступен набор команд микропроцессоров 286/287). Используйте директиву {SG+}, но учтите, что такую программу можно исполнять только на ПК, оснащенных микропроцессором Intel 80286/80287 или более поздним.
160. Invalid symbol reference (Недопустимая ссылка на символ). К указанному символу нельзя обратиться в ассемблерной программе. Это может быть следствием таких причин:
Вы пытаетесь использовать ссылки на стандартные процедуры (функции) или специальные массивы MEM, MEMW, MEML, PORT я PORTW в ассемблерных операндах;
Вы обращаетесь к строковой, вещественной константе или константе типа SET в операнде ассемблерной команды;
в ассемблерном операнде Вы обращаетесь к процедуре или функции, написанной я режиме INLINE;
Вы пытаетесь получить с помощью операции @Result доступ к результату, возвращаемому функцией;
Вы пытаетесь использовать короткую форму команды JMP для передачи управления внепомеченный оператор программы.
