Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LR_Delphi_2.doc
Скачиваний:
9
Добавлен:
18.09.2019
Размер:
1.91 Mб
Скачать

Implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin

Stream1:=TMemoryStream.Create;

Stream2:=TMemoryStream.Create;

Stream3:=TFileStream.Create(MyFile3,fmCreate);

Stream4:=TFileStream.Create(MyFile4,fmCreate);

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

Stream1.Seek(0,soFromBeginning);

Stream1.LoadFromFile(MyFile1);

Stream2.Seek(0,soFromBeginning);

Stream2.LoadFromFile(MyFile2);

Stream3.Seek(0,soFromBeginning);

Stream1.Seek(0,soFromBeginning);

Stream3.CopyFrom(Stream1,Stream1.Size);

Stream2.Seek(0,soFromBeginning);

Stream3.CopyFrom(Stream2,Stream2.Size);

Stream3.Free;

Stream4.Seek(0,soFromBeginning);

Stream1.Seek(0,soFromBeginning);

Stream2.Seek(0,soFromBeginning);

Stream4.CopyFrom(Stream2,Stream2.Size);

Stream4.CopyFrom(Stream1,Stream1.Size);

Stream4.Free;

Stream1.Free;

Stream2.Free;

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

Memo1.Lines.LoadFromFile(MyFile1);

Memo2.Lines.LoadFromFile(MyFile2);

Memo3.Lines.LoadFromFile(MyFile3);

Memo4.Lines.LoadFromFile(MyFile4);

end;

Initialization

MyDir:='d:\Eddy\21_2\';

MyFile1:=MyDir+'MyFile1.txt';

MyFile2:=MyDir+'MyFile2.txt';

MyFile3:=MyDir+'MyFile3.txt';

MyFile4:=MyDir+'MyFile4.txt';

end.

На показано окно приложения при исполнении программы. Видно, что данные файлов MyFile1 и MyFile2 объединяются в файлах MyFile3 и MyFile4 в разном порядке.

рис. 21.11. Окно приложения задания 2 при исполнении программы

Выводы

  1. Для работы с потоками в языке Object Pascal используются потоки TStream.

  2. Класс TStream имеет классы-потомки. Основные из них – это файловый поток TFileStream и поток в памяти TMemoryStream.

  3. Файловый поток TFileStream обеспечивает работу с файлами безотносительно их содержания. Файл рассматривается, как поток байтов. Файловый поток всегда ассоциируется с дисковой памятью.

  4. Поток в памяти TMemoryStream подобен файловому, только он создается в оперативной памяти.

22.Создание в Delphi кроссплатформенного приложения

Подготовка к работе

По указанной литературе изучить:

  1. Методику создания в ИСР Delphi кроссплатформенного приложения.

  2. Структуру панели компонент.

  3. Различие в библиотеках компонент VCL и CLX.

Контрольные вопросы

  1. Определение кроссплатформенного приложения.

  2. Различие в библиотеках компонент VCL и CLX.

  3. Различие в файлах проектов приложения под Windows и кроссплатформенного.

  4. Различие в стартовых кодах модулей формы приложения под Windows и кроссплатформенного.

Задание

  1. Создать проект приложения Windows. Оно должно в символьном режиме выводить на экран фразу «Hello, Windows».

  2. Создать проект приложения CLX. Оно должно в символьном режиме выводить на экран фразу «Hello, CLX».

  3. Сравнить библиотеки компонент VCL и CLX.

Пример выполнения

Задание 1. Создать приложение под Windows

Активизировать ИСР. По умолчанию создается приложение под Windows. В окно конструктора формы заносим два компонента и устанавливаем свойства объектов формы:

  • Кнопка (Button 1). В инспекторе объектов для кнопки задаем свойство Caption = Нажми меня.

  • Метка (Label1). В инспекторе объектов для свойства Captionметки задаем пустую строку.

  • Форма (Form1). В инспекторе объектов для формы задаем свойство Caption = Приложение под Windows.

В результате окно формы принимает вид, показанный на Рис. 22 .23. ИСР создает заготовку кода модуля формы. В код нужно добавить функциональность, написав код обработчика события нажатия кнопки. Двойным щелчком левой кнопкой мыши по кнопке Button1 инициируем создание обработчика события нажатия этой кнопки. ИСР автоматически добавляет для обработчика в разделе interface заголовок, а в разделе implementation заготовку его кода. Курсор автоматически устанавливается в тело кода обработчика, куда необходимо занести исполняемые коды. Для нашего проекта это всего две команды:

  • Label1.Caption:=’Hello, Windows’;

  • Button1.Visible:=false;

Первая команда свойству caption (надпись) метки Lable1 присваивает значение строки для вывода сообщения на экран, вторая команда свойству visible (видимость) кнопки Button1 присваивает значение false (ложь), делая ее невидимой. На Рис. 22 .24 показано итоговое окно Редактора кода модуля формы.

Рис. 22.23. Окно Конструктора формы проекта задания 1

Обращаем внимание на то, что в разделе implementation в директиве компилятора указана ссылка на файл модуля формы с расширением .dfm. Для кроссплатформенного приложения расширение другое - .xfm.

Рис. 22.24. Код модуля формы проекта задания 1

После запуска программы на исполнение получим окно формы, показанное на Рис. 22 .25.

Рис. 22.25. Окно формы работающего приложения проекта задания 1

Задание 2. Создать кроссплатформенное приложение

Активизировать ИСР. По умолчанию создается приложение под Windows. Нужно из меню выбрать команду Файл=>Новый=>Приложение CLX, после чего создается проект кроссплатформенного приложения. В окно конструктора формы заносим два компонента и устанавливаем свойства объектов формы:

  • Кнопка (Button 1). В инспекторе объектов для кнопки задаем свойство Caption = Нажми меня.

  • Метка (Label1). В инспекторе объектов для свойства Captionметки задаем пустую строку.

  • Форма (Form1). В инспекторе объектов для формы задаем свойство Caption = CLX приложение.

В результате окно формы принимает вид, показанный на Рис. 22 .26.

Рис. 22.26. Окно Конструктора формы проекта задания 2

ИСР создает заготовку кода модуля формы. В код нужно добавить функциональность, написав код обработчика события нажатия кнопки. Двойным щелчком левой кнопкой мыши по кнопке Button1 инициируем создание обработчика события нажатия этой кнопки. ИСР автоматически добавляет для обработчика в разделе interface заголовок, а в разделе implementation заготовку его кода. Курсор автоматически устанавливается в тело кода обработчика, куда необходимо занести исполняемые коды. Для нашего проекта это всего две команды:

  • Label1.Caption:=’Hello, CLX’;

  • Button1.Visible:=false;

Первая команда свойству caption (надпись) метки Lable1 присваивает значение строки для вывода сообщения на экран, вторая команда свойству visible (видимость) кнопки Button1 присваивает значение false (ложь), делая ее невидимой. На Рис. 22 .27 показано итоговое окно Редактора кода модуля формы проекта задания 2.

Обращаем внимание на то, что в разделе implementation в директиве компилятора указана ссылка на файл модуля формы с расширением .xfm. Для приложения под Windows расширение другое - .dfm.

Рис. 22.27. Окно редактора формы проекта задания 2

После запуска программы на исполнение получим окно формы, показанное на Рис. 22 .28.

Рис. 22.28. Окно формы работающего приложения проекта задания 2

Задание 3. Сравнить библиотеки компонент VCL и CLX.

Сравнение содержания страниц библиотек компонент VCL для приложений под Windows и CLX для кроссплатформенных приложений показывает, что они функционально почти идентичные. Имена компонент в библиотеках почти всегда совпадают (хотя их реализации отличаются в связи с различиями операционных систем Windows и Linux. Для программиста Delphi разница состоит только в содержании страниц. Например, на Рис. 22 .29 показано содержание страниц Additional двух библиотек. Видно, что в библиотеке VCL поддерживается большее число компонент. Отметим, что библиотека CLX не поддерживает компонент Chart для построения графиков функций.

Рис. 22.29. Страницы Additional библиотек VCL и CLX

Выводы

  1. ИСР Delphi 7 поддерживает создание кроссплатформенных приложений.

  2. Для создания кроссплатформенного приложения используется библиотека компонент CLX.

  3. Для создания кроссплатформенного приложения в ИСР Delphi выбирается тип приложения. После этого для разработки проекта автоматически подключается библиотека компонент CLX.

  4. Библиотека компонент CLX почти идентична библиотеке компонентVCL. Имена компонент в библиотеках почти всегда совпадают.

  5. Библиотека VCL содержит больше компонент, чем библиотека CLX.

83

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]