- •12.Списки
- •Interface
- •Implementation
- •13.Модули
- •Interface
- •Implementation
- •Interface
- •Implementation
- •Interface
- •Implementation
- •14.Таблицы
- •Interface
- •Implementation
- •15.Графика, отображение графиков функций
- •Interface
- •Implementation
- •Initialization
- •16.Графика, примитивы
- •Interface
- •Implementation
- •Interface
- •Implementation
- •Interface
- •Implementation
- •Initialization
- •17.Графика, растровые изображения и анимация
- •Interface
- •Implementation
- •Initialization
- •Interface
- •Implementation
- •18.Тестирование и отладка
- •19.Квадратное уравнение
- •Interface
- •20.Класс tThread
- •Interface
- •Implementation
- •Interface
- •Implementation
- •Interface
- •Implementation
- •21.Класс tStream
- •Interface
- •Implementation
- •Initialization
- •Interface
- •Implementation
- •Initialization
- •22.Создание в Delphi кроссплатформенного приложения
Implementation
{$R *.DFM}
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Edit1.Text:=IntToStr(Thread1.Count);
Edit2.Text:=IntToStr(Thread2.Count);
Thread1.Count:=0;
Thread2.Count:=0;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Thread1:=TSimpleThread.Create( False );
Thread1.Priority:=tpLowest;
Thread2:=TSimpleThread.Create( False );
Thread2.Priority:=tpLowest;
end;
procedure TForm1.TrackBar1Change(Sender: TObject);
var
I:Integer;
Priority: TThreadPriority;
begin
Priority := tpLowest;
for I:=0 to (Sender as TTrackBar).Position-1 do inc(Priority);
If Sender=TrackBar1
then Thread1.Priority:=Priority
else Thread2.Priority:=Priority;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Thread1.Suspend;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Thread1.Resume;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Thread2.Suspend;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
Thread2.Resume
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
Thread1.Suspended:=not Thread1.Suspended;
Thread2.Suspended:=not Thread2.Suspended;
end;
end.
Выводы
Многозадачная операционная система Windows поддерживает параллельно исполняемые процессы, отводя каждому процессу кванты времени.
Для управления параллельными процессами в языке Object Pascal используются потоки Thread.
Класс TThread – абстрактный класс. Для использования потоков нужно создавать класс-потомок.
Объекты класса TThread имеют приоритеты, регулируя которые можно изменять долю времени, отводимому операционной системой на выполнение каждого процесса.
21.Класс tStream
Подготовка к работе
По рекомендованной литературе изучить:
назначение объектов класса TStream,
классификация объектов класса TStream,
свойства и методы объектов класса TStream,
Разработать алгоритмы и программы решения в соответствии с указанными заданиями.
Контрольные вопросы
Определение класса потока TStream.
Свойства Size и Position потока TStream.
Функция CopyFrom потока TStream.
Функции Read и Write потока TStream.
Процедуры ReadBuffer и WriteBuffer.
Функции ReadComponent, ReadComponentRes и процедуры WriteComponent, WriteComponentRes.
Процедуры ReadResHeader и WriteResourceHeader.
Функция Seek потока TStream.
Процедура SetSize потока TStream.
Процедура Free потока TStream.
Конструктор файлового потока TFileStream.
Режимы Mode открытия файла в потоке TFileStream.
Режимы Right совместного использования файла в потоке TFileStream.
Свойство Memory потока TMemoryStream.
Процедура SetSize потока TMemoryStream.
Процедура Clear потока TMemoryStream.
Процедуры LoadFromFile, LoadFromStream и SaveToFile, SaveToStream для потока TMemoryStream.
Класс потока строк TStringStream.
Задания к работе
Создать программу, создающую 4 файловых потока класса TFileStream. Два потока используют существующие файлы MyFile1 и MyFile2, а два поддерживают новые файлы MyFile3 и MyFile4. Файл MyFile3 = MyFile1 + MyFile2, а файл MyFile4 = MyFile2 + MyFile1. Предварительно файлы MyFile1 и MyFile2 нужно создать с помощью программы Блокнот и поместить в папку проекта. Проект – приложение.
Изменить программу задания 1, чтобы в ней для данных из файлов MyFile1 и MyFile2 использовались потоки класса TMemoryStream. Проект – приложение.
Пример выполнения
Задание 1
Создаем приложение, форма которого представлена на рис. 21 .8. Файлы проекта сохраняем в папке 21_1.
рис. 21.8. Окно формы проекта задания 1 на этапе конструирования
Для формы определим надпись «Класс TFileStream». В верхней части формы размещены две кнопки с надписями:
Создать файловые потоки Stream 1..4. Этой кнопке соответствует обработчик, создающий потоки Stream1, Stream2, Stream3, Stream4, связанные с файлами MyFile1, MyFile2, MyFile3, MyFile4.
Формировать файловые потоки Stream 3, 4.
В редакторе Блокнот создаем текстовые файлы MyFile1 и MyFile2. Каждый из них содержит уникальные строки. Эти файлы сохраняем в папке проекта. В нижней части формы размещены 4 многострочных редактора Memo1, Memo2, Memo3 и Memo4, в которые программно выводятся файлы потоков. Над каждым редактором размещена метка с заголовком, содержащим имя файла. Над указанными компонентами размещена кнопка с надписью «Посмотреть файлы», обработчик которой выводит в редакторы содержимое файлов.
Листинг модуля формы
unit Prg_21_1_;