
- •Занятие 1. Введение Почему именно Delphi?
- •Что мы видим на экране
- •Контрольные вопросы:
- •Занятие 2. Мое первое приложение в Delphi Вывести текст в окне
- •Задания для самостоятельной работы
- •Кнопки. Какие они бывают и зачем они?
- •Задания для самостоятельной работы
- •Поле редактирования
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Занятие 3. Введение в язык программирования Pascal
- •Понятие алгоритма
- •Структура процедуры
- •Правила задания имен языка Pascal
- •Задания для самостоятельной работы
- •Тип данных
- •Числовой тип данных. Целые числа
- •Числовой тип данных. Вещественные числа
- •Описание данных
- •Задания для самостоятельной работы
- •Операции
- •Присвоение значения переменной. Оператор присваивания
- •Задания для самостоятельной работы
- •Задача «Простой калькулятор»
- •Встроенные функции
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Занятие 4. Разветвляющийся алгоритм
- •Логический тип данных
- •Описание данных логического типа
- •Логические выражения
- •Разветвляющийся алгоритм
- •Оператор if
- •Оператор выбора case
- •Задания для самостоятельной работы
- •Списки. Компоненты ListBox и ComboBox
- •Зависимые переключатели. Компоненты RadioButton, RadioGroup
- •Задание для самостоятельной работы
- •Добавление формы к проекту
- •Структура модуля Pascal
- •Как открыть форму
- •Задание для самостоятельной работы
- •Способность форм ссылаться друг на друга
- •Задание для самостоятельной работы
- •Просмотр форм и ассоциированных с ними модулей
- •Основные свойства, методы и события формы
- •Менеджер проектов
- •Опции пpоекта
- •Упpавление пpоектами
- •Компиляция и сборка проекта
- •Выполнение и отладка проекта
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Занятие 6. Начинаем рисовать
- •Рисование линий
- •Задание цвета
- •Рисование фигур
- •Свойства класса tBrush
- •Вывод текста
- •События формы OnPaint и OnResize
- •Задания для самостоятельной работы
- •Занятие 7. Циклы
- •Цикл со счетчиком: for
- •Цикл с предусловием: while
- •Цикл с постусловием: repeat..Until
- •Использование операторов Continue и Break в циклах
- •Задание случайных чисел. Функция Random. Процедура Randomize
- •Вложенные циклы
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Занятие 8. Массивы
- •Одномерные массивы
- •Двумерные массивы
- •Компонент tStringGrid
- •Задание для самостоятельной работы
- •Контрольные вопросы
- •Занятие 9. Строки и символы
- •Символьный тип данных
- •Строковый тип данных
- •Сравнение текстовой информации
- •Функции для работы с текстовой информацией
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Занятие 10. Работа с изображениями
- •Редактор Image Editor
- •Как отобразить рисунок в форме
- •Компонент Timer
- •Как заставить картинку двигаться
- •Случайное движение
- •Задание для самостоятельной работы.
- •Движение по закону
- •Задание для самостоятельной работы
- •Управляемое движение
- •Задание для самостоятельной работы
- •Как совместить разные виды движения
- •Задание для самостоятельной работы
- •Использование мыши
- •Занятие 11. Процедуры и функции
- •Описание и вызов процедуры
- •Описание и вызов функции
- •Где описывать процедуры(функции)
- •Передача параметров по ссылке и по значению
- •Контрольные вопросы
- •Задание для самостоятельной работы
- •Занятие12. Еще про компоненты Еще раз про списки
- •Функция MessageDlg
- •Задание для самостоятельной работы
- •Главное меню приложения. Компонент MainManu
- •Задание для самостоятельной работы
- •Кнопочная панель. Компонент ToolBar
- •Область редактирования. Компонент Memo
- •Контекстное меню. Компонент PopupMenu
- •Диалоговые окна Windows
- •Задание для самостоятельной работы
- •Занятие 13. Объектно-ориентированный подход (ооп) в программировании Основные понятия ооп
- •Основные принципы ооп
- •Тип данных запись (структура)
- •Задание для самостоятельной работы
- •Классы и объекты в Delphi
- •Задание для самостоятельной работы
- •Контрольные вопросы
- •Занятие 14. Работа с файлами
- •Общая технология работы с файлами в Delphi
- •Стандартный подход к работе с файлами
- •Описание файловой переменной
- •Открытие файлов
- •Запись в файл
- •Считывание из файла
- •Закрытие файла
- •Установка новой позиции в файле
- •Текстовые файлы
- •Конец файла
- •Стандартные подпрограммы для работы с файлами и каталогами
- •Пример работы с нетипизированными файлами
- •Пример работы с типизированными файлами
- •Пример работы с текстовыми файлами
- •Объектный подход к работе с файлами
- •Задания для самостоятельной работы
- •Контрольные вопросы
Пример работы с нетипизированными файлами
В данном примере выполняется копирование информации из одного файла в другой, при этом файлы выбираются с использованием стандартных диалоговых окон Windows. Считывание и запись информации выполняется с использованием процедур BlockRead и BlockWrite. Копирование выполняется до тех пор, пока число считанных байтов из файла копирования не станет равным нулю, либо пока число записанных байт не будет отличаться от числа считанных байт. Число скопированных байтов выводится на экран. Проверьте правильность выполнения копирования, для этого посмотрите содержимое файлов.
var
FromF, ToF: file;
NumRead, NumWritten: Integer;
Buf: array[1..2048] of Char;
begin
if OpenDialog1.Execute then
{ Диалог открытия файла, откуда выполняется копирование }
begin
AssignFile(FromF, OpenDialog1.FileName);
Reset(FromF, 1); { Размер записи = 1 }
{ Диалог сохранения файла, куда производится сохранение файла}
if SaveDialog1.Execute then
begin
AssignFile(ToF, SaveDialog1.FileName); { Открыть выходной файл }
{ старое содержимое удаляется }
Rewrite(ToF, 1); { Размер записи = 1 }
Canvas.TextOut(10, 10, 'Копирование ' + IntToStr(FileSize(FromF)) + ' байтов ...');
repeat
BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
BlockWrite(ToF, Buf, NumRead, NumWritten);
until (NumRead = 0) or (NumWritten <> NumRead);
CloseFile(FromF);
CloseFile(ToF);
end;
end;
Пример работы с типизированными файлами
Пусть имеем файл, в котором хранится таблица рекордов с именами игроков и очками, которые им удалось набрать. Информация об игроке задается с помощью типа записи TTableRec:
type TTableRec = record
name:string[20]; // имя игрока
ochki:integer; // очки
end;
Для хранения такой информации в файле будем использовать типизированный файл, который опишем с помощью переменной:
f2:File of TTableRec;
Создадим форму, подобную той, что изображена на рисунке:
В поля формы вводятся соответственно имя игрока и его очки. По кнопке «Запись в типизир файл» выполняется запись информации о новом игроке в конец типизированного файла. По кнопке «Прочитать из типизир файла» можно убедиться в том, что запись выполнена правильно, содержимое файла отображается в поле Memo1. Программный код на кнопку «Запись в типизир файл» приведен ниже:
var
f2:File of TTableRec;
size:integer;
TableRec:TTableRec;
begin
TableRec.name:=Edit1.Text;
TableRec.ochki:=StrToInt(Edit2.text);
AssignFile(f2,'d:\temp\t2.txt');
if not FileExists('d:\temp\t2.txt') then
begin
// запись в новый файл
rewrite(f2);
write(f2,TableRec);
end
else
begin
reset(f2);
// запись в конец типизированного файла
size:=filesize(f2);
Seek(f2,size);
write(f2,TableRec);
end;
CloseFile(f2);
Программный код на кнопку «Прочитать из типизир файла» приведен ниже:
var
f2:File of TTableRec;
r1:TTableRec;
str:string;
begin
// прочитать содержимое типизированного файла
AssignFile(f2,'d:\temp\t2.txt');
Reset(f2);
Memo1.Clear;
while not eof(f2) do
begin
Read(f2,r1);
str:=r1.name+' '+ IntToStr(r1.ochki)+' ';
Memo1.Lines.Add(str);
end;
CloseFile(F2);
end;