- •2014 Содержание
- •1 Работа с Macromedia Flash
- •1.1 Работа со статичной графикой
- •Лабораторная работа №1
- •1.2 Работа с Action Script
- •Лабораторная работа №2
- •Лабораторная работа №3
- •Лабораторная работа №4
- •2 Работа с Borland Delphi7
- •2.1 Работа с ini-файлами
- •Лабораторная работа №1
- •Лабораторная работа №2
- •2.2 Создание многопоточных приложений
- •Лабораторная работа №3
- •3 Индивидуальное задание
- •Заключение
- •Список используемых источников
Лабораторная работа №2
B Delphi класс TIniFile находится в модуле IniFiles, который надо указывать в разделе подключаемых модулей Uses. Объявление переменной, в которую будем заносить (или читать) данные:
Var IniFile :TIniFile;
Объявление переменной, которую необходимо создать:
IniFile :=TIniFile.Create('Название_файла');
Освобождаем память командой:
IniFile.Free;
Задание к лабораторной №2:
В созданном в задании 1 приложении, написать программный код для сохранения данных о ширине всех столбцов компонентов DB Grid;
Обеспечить хранение пути к БД в ini-файле.
На рисунке 6 можно увидеть данные, которые сохранились в ini-файле после последнего запуска приложения.
Рисунок 6 – Содержание ini-файла
Ini-файлы можно использовать для хранения информации о расположении базы данных, которая необходима для работы приложения. Задание выполнено добавлением кода в приложение, которое было создано в лабораторной №1.
Фрагмент добавленного кода, который создаёт ini-файл в каталоге, где располагается приложение:
TIniFile.Create(ExtractFilePath(Application.ExeName)+'Lab2.ini')
2.2 Создание многопоточных приложений
Потоки в Delphi выполняют функцию имитации псевдопараллельной работы приложения. Как известно, для организации многозадачности операционная система выделяет каждому приложению, выполняющемуся в настоящий момент, определённые кванты времени, длина и количество которых определяется его приоритетом. Поэтому объём работы, который приложение может выполнить, определяется тем, сколько таких квантов оно сможет получить в единицу времени. Для операционной системы каждый поток является самостоятельной задачей, которой выделяются кванты времени на общих основаниях. Поэтому приложение Delphi, умеющее создать несколько потоков, получит больше времени операционной системы, и соответственно сможет выполнить больший объём работы [2].
Создать дополнительный поток в Delphi поможет объект TThread. Мастер создания дополнительного потока в Delphi создаёт отдельный модуль, в рамках которого выполняется поток. Этот модуль имеет тип TThread Object.
Лабораторная работа №3
Создаём приложение в среде Borland Delphi 7, иллюстрирующее работу многопоточных приложений.
Задание к лабораторной №3: В созданном в задании 1 приложении добавить формирование отчетов в Exel Формирование и вывод отчета организовать в отдельном потоке.
Результаты работы: в имеющееся приложение были добавлены код вывода таблицы в Exel отдельным потоком и кнопка (Рисунок 7).
Рисунок 7 – Многопоточное приложение |
|
Вначале был создан поток следующим образом:
tr:=beginthread(nil,0,addr(TForm1.axe),nil,0,id);
После этого в этот поток был внесён код для вывода таблицы в Exel c помощью следующего кода:
procedure TForm1.axe;
var
i,j,s:integer;
XL,xlb:variant;
begin
CoInitialize(nil);
XL:=CreateOleObject('Excel.Application');
XL.DisplayAlerts := false;
xlb:=xl.workbooks.add;
xl.visible:=false;
table1.First;
for j:=1 to table1.FieldCount do
xlb.WorkSheets[1].Columns[j].ColumnWidth := 17;
for i:=0 to table1.FieldCount-1 do
xlb.WorkSheets[1].Cells[1,i+1]:=table1.fields[i].fieldname;
s:=2;
for i:=0 to table1.RecordCount-1 do
begin
for j:=0 to table1.FieldCount-1 do
xlb.WorkSheets[1].Cells[s,j+1]:=table1.Fields[j].AsString;
inc(s);
table1.Next;
end;
xl.visible:=true;
CoUninitialize;
CloseHandle(tr);
end;
end;