- •Windows -приложение
- •Среда программирования
- •Встроенный отладчик
- •Использование графики
- •Графические данные и палитра
- •Сохранение проекта
- •Структура приложения
- •Структура модуля
- •Простые типы
- •Символьные типы
- •Логические типы
- •Тип перечень
- •Составной оператор
- •Оператор if
- •Оператор цикла for
- •Оператор цикла while
- •Оператор цикла repeat
- •Пример приложения 6
- •Пример приложения 7
- •Статические массивы
- •Динамические массивы
- •Оператор with
- •Идентичность типов
- •Совместимость типов
- •Преобразование типов
- •Операторы обработки исключительных ситуаций
- •Рекурсия
- •Процедура exit
- •Директивы подпрограммы
- •Класс как объектный тип
- •Наследование
- •Операции is и as
- •Типы ссылки на класс
- •Типизированные файлы
- •Файлы без типа
- •Пример приложения 17
- •Компонент tmainmenii
- •Двунаправленные списки
- •Потоки данных
- •Пример приложения 22
- •Интерфейс drag and drop
- •Пример приложения 24
- •С файлами
- •Пример приложения 26
- •Программные потоки
- •Приоритеты потоков
- •Класс tthread
- •Проблемы синхронизации потоков
Проблемы синхронизации потоков
В классе TTread не зря введен метод синхронизации потоков. Он необходим, чтобы как-то блокировать неприятные ситуации, которые могут случиться. Следует отметить, что в примерах, приведенных ранее, имеются дополнительные трудности, связанные с использованием бесконечно рабо-
223
тающих потоков (бесконечные циклы). Поэтому даже в случае двух потоков стандартные методы синхронизации иногда не справляются.
Если в процессе работает несколько потоков, то можно ожидать две основные неприятности: тупики и гонки. Тупики возникают, когда два или более потоков ожидают один и тот же ресурс и блокируют друг друга, так как не указано, какой поток должен в такой ситуации получить нужный ресурс. Гонки возникают, когда два или более потоков используют один и тот же ресурс и изменяют его в непредусмотренном порядке, поскольку операционная система может поменять очередность работы потоков. Для разрешения указанных и некоторых других ситуаций разрабатываются дополнительные механизмы синхронизации: функции ожидания и объекты синхронизации.
Среди функций чаще всего используются WaitForSingleObject и Wait-ForMultipleObjects (функции Windows API). Среди объектов выделяются Critical Section (критическая секция), Event (событие), Mutes (взаимное исключение), Semaphore (семафор), Timer (таймер). В различных случаях выбирается свой вариант.
ПЕРЕЧЕНЬ КОМПОНЕНТОВ, ИСПОЛЬЗОВАННЫХ В ПРИМЕРАХ
В табл. 17 приводится перечень используемых компонентов, которые понадобились при решении примеров.
Таблица 17
Номер примера |
Компоненты |
1 |
TButton, TLabel, TEdit |
2 |
TPanel, TBitBtn |
3 |
TBevel |
4 |
TImage |
5 |
TListBox |
6 |
TMemo |
7 |
TComboBox |
8 |
TStringGrid |
9 |
TRadioGroup, TRadioButton |
10 |
TCheckBox, TDrawGrid |
12 |
ITabControl |
. 13 |
TPageControl, TSpinEdit |
14 |
TTimer |
17 |
TMainMenu |
18 |
TListView |
19 |
TColorBox, TList |
20 |
Проект с двумя формами |
21 |
TChart, TFileStream, TOpenDialog, TSaveDialog |
22 |
TMemoryStream |
24 |
TActionLis^TCoolBar^TToolBar, TSphtter |
27 |
TThread |
28 |
TProgressBar, TTrackBar |
225
ОГЛАВЛЕНИЕ
СПИСОК ЛИТЕРАТУРЫ
1.Гофман В., Хомоненко A. Delphi 6. - Дюссельдорф, М., Киев, С-Пб: БХВ - Петербург, 2001.
2Дарахвелидзе П., Марков Е. Программирование в Delphi 7. - С-Пб: БХВ-Петербург, 2003.
3.Использование Delphi 3/ Т. Миллер, Д. Пауэл и др.. - Киев, М.: Диалектика, 1997.
4.Кэнту М. Delphi 4. - М., Харьков, Минск, С-Пб: Питер, 1999.
5.Федоров A, Delphi 2.0 для всех. — М.: КомпьютерПресс, 1997.226
ВВЕДЕНИЕ 3
ОСНОВЫ DELPHI 5
ОБЩАЯ ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ ..5
ЯЗЫК ПРОГРАММИРОВАНИЯ 6
ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ 7
ВИЗУАЛЬНОЕ ПРОГРАММИРОВАНИЕ 8
СОБЫТИЙНО УПРАВЛЯЕМОЕ ПРОГРАММИРОВАНИЕ 8
WINDOWS-ПРИЛОЖЕНИЕ 10
СРЕДА ПРОГРАММИРОВАНИЯ 10
ПЕРВОНАЧАЛЬНЬШ СВЕДЕНИЯ О ПРОЕКТЕ ПРИЛОЖЕНИЯ 12
ВСТРОЕННЫЙ ОТЛАДЧИК 14
ИСПОЛЬЗОВАНИЕ ВСТРОЕННЫХ КЛАССОВ 14
ИЕРАРХИЯ КЛАССОВ 14
ИСПОЛЬЗОВАНИЕ ПАЛИТРЫ КОМПОНЕНТОВ И ИНСПЕКТОРА
ОБЪЕКТОВ 16
ИСПОЛЬЗОВАНИЕ ГРАФИКИ ......17
ОСНОВНЫЕ ИНСТРУМЕНТЫ 17
ГРАФИЧЕСКИЕ ДАННЫЕ И ПАЛИТРА 19
НЕКОТОРЫЕ ОБЩИЕ СВОЙСТВА КОМПОНЕНТОВ .20
СОХРАНЕНИЕ ПРОЕКТА 21
ПОСТРОЕНИЕ ПРОСТЕЙШЕГО ПРОЕКТА .22
ПОНЯТИЕ ИСКЛЮЧИТЕЛЬНОЙ СИТУ АЛИИ 23
ВВЕДЕНИЕ В OBJECT PASCAL 24
СТРУКТУРА ПРИЛОЖЕНИЯ 24
СТРУКТУРА ПРОГРАММЫ-ПРОЕКТА 25
СТРУКТУРА МОДУЛЯ. 26
ПРИМЕР ПРИЛОЖЕНИЯ! 28
ОПИСАНИЕ ПРОГРАММНЫХ ЭЛЕМЕНТОВ 31
ПРОГРАММНЫЕ ЭЛЕМЕНТЫ И АДРЕСА ПАМЯТИ 31
ОБЛАСТИ ВИДИМОСТИ 31
ПРАВИЛА ЗАПИСИ ИМЕН 32
ВРЕМЯ ЖИЗНИ ИДЕНТИФИКАТОРОВ 32
ИСПОЛЬЗОВАНИЕ ЛОКАЛЬНЫХ ПЕРЕМЕННЫХ В ПРИМЕРЕ 7... .32 ИСПОЛЬЗОВАНИЕ ГЛОБАЛЬНЫХ ПЕРЕМЕННЫХ В ПРИМЕРЕ 1...33
ТИПЫ 33
ПРОСТЫЕ ТИПЫ 34
ЦЕЛЫЕ ТИПЫ 35
227
СИМВОЛЬНЫЕ ТИПЫ 36
ЛОГИЧЕСКИЕ ТИПЫ... ; 37
ТИП ПЕРЕЧЕНЬ 37
ИНТЕРВАЛЬНЫЙ ТИП 38
ВЕЩЕСТВЕННЫЙ ТИП 38
ТИП ДАТА-ВРЕМЯ. 39
ВЫРАЖЕНИЯ 39
КОНСТАНТЫ 40
ТИПИЗИРОВАННЫЕ КОНСТАНТЫ 40
ПЕРЕМЕННЫЕ 40
ОПЕРАЦИИ 41
ФУНКЦИИ 42
ПОРЯДОК ВЫЧИСЛЕНИЯ ВЫРАЖЕНИЙ. 42
ВИДЫ ОПЕРАТОРОВ 43
ПРОСТЫЕ ОПЕРАТОРЫ 43
СОСТАВНОЙ ОПЕРАТОР 44
ОПЕРАТОРЫ УСЛОВНОГО ПЕРЕХОДА 44
ОПЕРАТОР IF 45
ПРИМЕР ПРИЛОЖЕНИЯ2 45
ОПЕРАТОР CASE 47
ПРИМЕР ПРИЛОЖЕНИЯ 3 48
ИСПОЛЬЗОВАНИЕ ENTER В ПРИМЕРЕ 3 52
ОПЕРАТОРЫ ЦИКЛА 53
ОПЕРАТОР ЦИКЛА FOR 53
ПРИМЕР ПРИЛОЖЕНИЯ 4 54
ОПЕРАТОР ЦИКЛА WHILE 58
ПРИМЕР ПРИЛОЖЕНИЯ 5 58
ОПЕРАТОР ЦИКЛА REPEAT 61
ПРИМЕР ПРИЛОЖЕНИЯ б 61
ИСПОЛЬЗОВАНИЕ ПРОЦЕДУР BREAK И CONTINUE 64
ПРИМЕР ПРИЛОЖЕНИЯ 7 64
МАССИВЫ 67
СТАТИЧЕСКИЕ МАССИВЫ 67
ДИНАМИЧЕСКИЕ МАССИВЫ 68
ПРИМЕР ПРИЛОЖЕНИЯ 8 70
СТРОКИ 71
ПРИМЕР ПРИЛОЖЕНИЯ 9 73
ЗАПИСИ (ОБЪЕДИНЕНИЯ) 76
ОПЕРАТОР WITH 78
228
ПРИМЕР ПРИЛОЖЕНИЯ 10 79
СОВМЕСТИМОСТЬ И ПРЕОБРАЗОВАНИЕ ТИПОВ ДАННЫХ 85
ИДЕНТИЧНОСТЬ ТИПОВ 86
СОВМЕСТИМОСТЬ ТИПОВ.. 86
СОВМЕСТИМОСТЬ ПО ПРИСВАИВАНИЮ 86
ПРЕОБРАЗОВАНИЕ ТИПОВ 87
ОПЕРАТОРЫ ОБРАБОТКИ ИСКЛЮЧИТЕЛЬНЫХ СИТУАЦИЙ 87
ПРИМЕР ПРИЛОЖЕНИЯ 11 89
МНОЖЕСТВА 92
ОПЕРАЦИИ НАД МНОЖЕСТВАМИ 93
ПРИМЕР ПРИЛОЖЕНИЯ 12 94
ВАРИАНТНЫЙ ТИП ДАННЫХ 97
ПРОЦЕДУРЫ И ФУНКЦИИ 99
ПРОЦЕДУРА 100
ФУНКЦИЯ 100
РЕКУРСИЯ 102
ФОРМАЛЬНЫЕ И ФАКТИЧЕСКИЕ ПАРАМЕТРЫ 102
ПАРАМЕТРЫ ЗНАЧЕНИЯ 102
ПАРАМЕТРЫ-ПЕРЕМЕННЫЕ 103
ПАРАМЕТРЫ-КОНСТАНТЫ 103
ПАРАМЕТРЫ БЕЗ ТИПА 103
МАССИВЫ ОТКРЫТОГО ТИПА 104
ПАРАМЕТРЫ ПО УМОЛЧАНИЮ 105
ПРОЦЕДУРА EXIT 106
ДИРЕКТИВЫ ПОДПРОГРАММЫ. 106
СОГЛАШЕНИЯ ПО ПЕРЕДАЧЕ ДАННЫХ. 106
ДИРЕКТИВА FORARD 106
ДИРЕКТИВА EXTERNAL 107
ДИРЕКТИВА ASSEMBLER 107
ПЕРЕГРУЖЕННЫЕ ПОДПРОГРАММЫ 107
ПРИМЕР ПРИЛОЖЕНИЯ 13 108
КЛАССЫ ИЗ
ИНКАПСУЛЯЦИЯ ИЗ
КЛАСС КАК ОБЪЕКТНЫЙ ТИП 114
НАСЛЕДОВАНИЕ 114
ОБЛАСТИ ВИДИМОСТИ 114
ОПЕРАЦИИ IS И AS 115
229
МЕТОДЫ 115
ВИДЫ МЕТОДОВ 116
МЕТОДЫ VIRTUAL И ПОЛИМОРФИЗМ. 116
МЕТОДЫ DINAMIC 118
МЕТОДЫ MESSAGE 118
МЕТОДЫ ABSTRACT. 118
МЕТОДЫ OVERRIDE 119
МЕТОДЫ CLASS 119
ПРИМЕР ПРИЛОЖЕНИЯ 14 119
ДИНАМИЧЕСКОЕ СОЗДАНИЕ КОМПОНЕНТОВ 119
ИСПОЛЬЗОВАНИЕ КЛАССА СО СЧЕТЧИКОМ ОБЪЕКТОВ 121
ОТСЛЕЖИВАНИЕ РАЗРУШЕНИЯ ОБЪЕКТОВ 123
СОБЫТИЯ , 123
УКАЗАТЕЛИ НА МЕТОДЫ 124
ПРИМЕР ПРИЛОЖЕНИЯ 15 125
ТИПЫ ССЫЛКИ НА КЛАСС 127
СВОЙСТВА '. 128
СВОЙСТВА SIMPLE 128
СВОЙСТВА ENUMERATED 129
СВОЙСТВА SET. 129
СВОЙСТВА OBJECT 129
СВОЙСТВА ARRAY. . . 131
ЗАДАНИЕ НАЧАЛЬНЫХ ЗНАЧЕНИЙ СВОЙСТВАМ. 132
ПРИМЕР ПРИЛОЖЕНИЯ 16 . 133
ФАЙЛОВЫЕ ТИПЫ 137
ТЕКСТОВЫЕ ФАЙЛЫ 138
ТИПИЗИРОВАННЫЕ ФАЙЛЫ 140
ФАЙЛЫ БЕЗ ТИПА 141
ДОПОЛНИТЕЛЬНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ 141
ПРИМЕР ПРИЛОЖЕНИЯ 17 142
КОМПОНЕНТ TMAINMENU 142
УКАЗАТЕЛИ 148
ПРИМЕР ПРИЛОЖЕНИЯ 18 150
ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ 153
ОДНОНАПРАВЛЕННЫЕ СПИСКИ 153
ДВУНАПРАВЛЕННЫЕ СПИСКИ 155
СТЕКИ, ОЧЕРЕДИ. 156
БИНАРНЫЕ ДЕРЕВЬЯ 156
ПРИМЕР ПРИЛОЖЕНИЯ 19 158
ПРОЦЕДУРНЫЙ ТИП 164
230
ПРОГРАММНЫЕ ЕДИНИЦЫ DLL 165
ПРИМЕР ПРИЛОЖЕНИЯ 20 166
ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ 170
ПОТОКИ ДАННЫХ 170
ПРИМЕР ПРИЛОЖЕНИЯ 21 171
ПРИМЕР ПРИЛОЖЕНИЯ 22 176
ИНТЕРФЕЙС DRAG AND DROP 179
ПРИМЕР ПРИЛОЖЕНИЯ 23 180
ТЕХНОЛОГИЯ DRAG AND DROP 184
ПРИМЕР ПРИЛОЖЕНИЯ 24 185
ИСПОЛЬЗОВАНИЕ ФУНКЦИЙ WINDOWS API ПРИ
РАБОТЕ С ФАЙЛАМИ 202
ПРИМЕР ПРИЛОЖЕНИЯ 25 205
ИСПОЛЬЗОВАНИЕ ОТОБРАЖАЕМЫХ ФАЙЛОВ 207
ПРИМЕР ПРИЛОЖЕНИЯ 26 209
ПРОГРАММНЫЕ ПОТОКИ 212
ПРИОРИТЕТЫ ПОТОКОВ 213
КЛАСС TTHREAD 214
ПРИМЕР ПРИЛОЖЕНИЯ 27 215
ИСПОЛЬЗОВАНИЕ БЛОКИРОВКИ В ПРИМЕРЕ 27 217
МНОГОПОТОЧНОЕ ПРИЛОЖЕНИЕ В ПРИМЕРЕ 28 218
ПРОБЛЕМЫ СИНХРОНИЗАЦИИ ПОТОКОВ 223
ПЕРЕЧЕНЬ КОМПОНЕНТОВ, ИСПОЛЬЗОВАННЫХ
В ПРИМЕРАХ 225
СПИСОК ЛИТЕРАТУРЫ 226