
- •Ключевые особенности
- •Полная интеграция с web-службами бизнес-партнеров
- •Быстрая и эффективная разработка web-приложений
- •Высокопроизводительное промежуточное по для web-служб
- •Кросс-платформенные решения
- •Эффективная работа с корпоративными базами данных
- •Корпоративные приложения для электронного бизнеса
- •Технология быстрой разработки приложений
- •Диагностический инструмент CodeGuard
- •Полный контроль над сложными проектами
- •Решения "под ключ" на основе Borland InterBase
- •Требования к системе
- •Ход работы
- •4. Создание библиотеки dll
- •Создайте консольное приложение.
- •Создайте приложения с графическим интерфейсом.
- •Создайте простейшую dll и тестирующее ее приложение.
- •Теоретические сведения
- •Ход работы
- •11. Аналогично вставьте в форму еще несколько текстовых полей с вашими биографическими данными.
- •12. Вставьте в форму объект типа Image (изображение).
- •13. Вставьте свою портретную фотографию с помощью свойства Picture (иллюстрация) объекта Image1.
- •14. Вставьте свою художественную фотографию в форму поверх имеющейся, воспользовавшись еще одним объектом типа Image.
- •16. Вставьте в форму кнопки для подсвечивания фотографий – два объекта типа Button с названиями Button1 и Button2.
- •17. Запрограммируйте кнопку "Портретная фотография" так, чтобы после ее нажатия в форме появлялась портретная фотография.
- •18. Запрограммируйте кнопку "Художественная фотография" соответственно ее назначению (см. П. 17).
- •19. Выполните программу и убедитесь, что кнопки выполняют свои функции. Закройте окно программы "Анкета студента".
- •20. Сохраните созданную программу в своей папке.
- •21.Создайте exe-файл программы.
- •Задания
- •Лабораторная работа n 3
- •Задача про обмен валюты
- •Теоретические сведения
- •Ход работы
- •Откажитесь от возможности изменять размеры окна программы, придав свойству формы BoderStyle значение bsDialog.
- •Вставьте в форму два объекта типа RadioButton (переключатели), как показано на рисунке 1.
- •Запрограммируйте кнопку «Конец».
- •Запрограммируйте кнопку «Вычислить».
- •Создайте exe файл вашей программы.
- •Продемонстрируйте созданную форму преподавателю. Задания
- •Лабораторная работа n 4
- •Программирование циклов.
- •Объекты: Memo, MainMenu, PopurMenu, CheckBox, GroupBox
- •Задача табулирования функции
- •Теоретические сведения
- •Ход работы
- •Замените Caption формы с “Form1” на «Табулирование функции».
- •Табулирование функции
- •Табулирование функции
- •20. Запустите созданную программу и исследуйте ее работу.
- •Задания
- •Табулирование функции
- •Английский язик - тестирование
- •После размещения рисунков!!!
- •Теоретические сведения
- •Ход работы
- •2.Замените заголовок (Caption) формы с "Forml" на "Английский язык — тестирование".
- •3.Откажитесь от всех системных кнопок формы, задав значение False во всех позициях свойства Bordericons: biSystemMenu, biMinimize, biMaximize и biHelp.
- •4.Расположите на форме объекты так, как показан на рис. 1.
- •5. Дважды щелкните на первом таймере и запрограммируйте мигание сообщения "Обязательно нажмите на кнопку "Готово" после размещения рисунков!!!" так:
- •6. Введите описание глобальных переменных программы:
- •7. Вставьте рисунки factory.Bmp, shipping.Bmp и finance.Bmp с папки
- •8. Запрограммируйте конструктор формы tForm1::tForm1 и функцию Result() сообщения результатов теста:
- •10. Аналогично запрограммируйте соответствующие события для перетягивания двух других рисунков.
- •11. Создайте функцию lmageInShape для проверки расположения рисунка (объекта Image) в середине некоторой геометрической фигуры (объекта Shape).
- •13. Запрограммируйте второй таймер, который обеспечивает индикацию времени выполнения от 100 до 0% со скоростью, обратно пропорциональной к числу в cSpinEdit1.
- •Сохраните программу и проект в рабочей папке.
- •Запустите программу. Перетягивайте мышью рисунки в середину соответствующих фигур. Закончите работу. Задания
- •Лабораторная работа n 6 объектно-ориентированное программирование в
- •Создания собственных классов. Наследование и виртуальные функции. Интерпретатор математических выражений.
- •Теоретические сведения
- •Ход работы
- •6. Введите математические выражения в поля Edit1 и Edit2 и очистите поля результатов Edit3 и Edit4. Запрограммируйте кнопку „Выход".
- •7. Задайте начальную точность вычислений, которая равна двум десятичным знакам.
- •8. Запрограммируйте кнопку „Вычислить” так:
- •9. Запрограммируйте функцию, которая будет выполняться после изменения числа в поле ComboBox1.
- •Задания
- •2. Вычислите значение функции от двух переменных f(X,y).
- •Лабораторная работа n 7
- •Усовершенствования интерпретатора математических выражений. Вычисление первой и второй производной
- •Ход работы
- •Создайте форму, показанную на рис. 1.
- •Введите описания классов и функций, которые будут использоваться в этой задаче.
- •5.Запрограммируйте кнопку "Вычислить" таким образом:
- •6. Запрограммируйте функцию, которая будет выполняться после изменения числа y поле ComboBox1.
- •Сохраните программу и убедитесь в ее работоспособности. Задания
4. Создание библиотеки dll
В следующем примере мы покажем, как присоединить к программе функцию из библиотеки. Причем библиотека эта будет не простая, а динамическая. Наиболее существенной особенностью динамических библиотек (DLL) является то, что содержащиеся в них процедуры, функции и ресурсы могут совместно использоваться несколькими приложениями. Это экономит, во-первых, место на диске (поскольку исключается дублирование кода), а во-вторых, оперативную память, когда в нее одновременно загружено несколько программ (по той же самой причине).
Последовательность действий в этом примере будет несколько сложнее, чем в предыдущих, так как мы здесь будем создавать сразу два программных модуля, связанных друг с другом: библиотеку и исполняемый модуль, который ее вызывает. Предлагаю вам проделать следующее:
Откройте новый проект приложения (File New Application в главном меню). Сохраните его, дав исходному модулю имя HWD11U, а исходному файлу проекта — HWD11.
Желательно сохранять файлы каждого проекта в отдельном пустом каталоге.
Поместите на форму две командных кнопки, назвав первую Call DLL, a вторую — Exit.
Создайте (с помощью инспектора объектов) процедуру обработки события OnClick для первой кнопки и введите в нее строку:
SayHelloO ;
Вторая кнопка должна закрывать программу; проделайте для нее все то же самое, что и в примере предыдущего раздела.
В верхней части файла, после всех директив #include, добавьте такую строчку: void export SayHello(void);
Файл теперь должен иметь такой вид:
#include <vcl.h> ftpragma hdrstop
#include "HWDllU.h"
void export SayHello(void);
//--------------------------------
#pragma package(smart_init) #pragma resource "*.dfm"
TFormI *Forml;
//---------------------------------------
_fastcall TFormI::TFormI(TComponent* Owner)
: TForm(Owner) {
}
//------------------------------------
void_fastcall TFormI::ButtonlClick(TObject *Sender)
{
SayHello() ;
} //------------------------------------
void_fastcall TFormI::Button2Click(TObject *Sender)
forml->Close();
}
С нашей главной программой пока все. Теперь откройте менеджер проектов (View | Project Manager). Наверху показан узел группы проектов с именем по умолчанию ProjectGroupl. Эта группа включает в себя пока всего один проект (HWDU.exe). Щелкните правой кнопкой мыши на узле группы и в контекстном меню выберите Add New Project...
Появится знакомый вам диалог New Items; выберите в нем значок DLL Wizard. В группе проектов появится новый узел, и для него будет открыто новое окно в редакторе кода. Введите код функции SayHelloO и добавьте в верхней части директиву f include, чтобы файл принял следующий вид:
#include <vcl.h>
#include <windows.h>
#pragma hdrstop //----------------------------------
void _export SayHello(void)
{
MessageBox(NULL, "Hello World from DLL!",
"Simple Greeting", MB__OK | MB_ICONEXCLAMATION);
}
Lnt WINAPI DilEntryPoint(HINSTANCE hinst,
unsigned long reason, void*)
{
return 1;
}
Сохраните проект DLL под именем SHello и постройте библиотеку, для чего вызовите для узла SHello. dll контекстное меню и выберите в нем Make. C++Builder компилирует исходный файл и создаст файл DLL; при этом он также генерирует (по умолчанию) библиотеку импорта SHello lib, которая требуется для компоновки исполняемого файла нашей программы.
Рядом с пунктом контекстного меню Make (собрать) имеется пункт Build (построить). Если вы откроете Project в главном меню, то увидите там эквивалентные пункты Make SHello и Build SHello. Обе команды выполняют построение текущего проекта (его целевого файла). Разница в том, что Build компилирует и компонует заново все входящие в проект файлы, в то время как Make производит те или иные действия лишь при необходимости, например, при модификации кода в одном исходном файле будет компилироваться только этот файл, после чего будет выполнена компоновка программы.
Теперь мы вернемся к проекту главной программы. (В верхней части менеджера проектов имеется выпадающий список; выберите в нем HWDlI.exe.) К нему следует присоединить библиотеку импорта уже построенной DLL, чтобы компоновщик мог разрешить ссылку на функцию SayHelLo (), вызываемую из главной программы (HWDlI.exe), но физически находящуюся в отдельно загружаемом файле (SHello.dll). Для этого вызовите контекстное меню ехе-узла и выберите в нем пункт Add. Появится стандартный диалог открытия файла.
В выпадающем списке типов файлов выберите Library file (.lib). Вы должны увидеть библиотеку SHello.lib; выберите ее и закройте диалог.
Библиотека будет присоединена к проекту HWDll.exe. Сохраните группу проектов, выбрав в ее контекстном меню Save Project
Group As...
Рисунок 7. Менеджер проектов, показывающий Структуру группы
Теперь осталось только компилировать и запустить наше главное приложение. Для этого просто нажмите кнопку Run инструментальной панели. Когда появится окно программы, нажмите кнопку Call DLL. Будет вызвана функция из DLL SayHello(), которая отобразит панель сообщения.
Рисунок 8. Вызов функции DLL
То, что мы сейчас проделали, называется статической загрузкой динамической библиотеки. Суть ее в том, что DLL (если она еще не загружена) автоматически загружается в память при запуске главной программы. Библиотека импорта необходима именно для статической загрузки, при которой все ссылки на DLL разрешаются еще на этапе компоновки.
Возможна и динамическая загрузка DLL, которая, однако, выполняется вручную, т. е. специально написанным для этого программным кодом; достоинство ее в том, что она может производиться лишь при необходимости. При этом разрешение ссылок на DLL происходит уже во время выполнения, — другими словами, программе приходится “на ходу” как-то искать нужную функцию в DLL (например, по имени).
Вот, собственно, и все о DLL. Хотя динамические библиотеки (да и всякие другие) выходят за рамки объема лабораторных работ и в дальнейшем изложении нам встречаться больше не будут, нам показалось полезным дать некоторое представление о том, как создание и использование этих библиотек выглядит в C++Builder.
Вывод
В этой работе мы показали типичные действия, выполняемые при разработке приложений в интегрированной среде C++Builder.
Контрольные вопросы
Дайте характеристику вариантам постановки BORLAND C++Builder 6.
Что такое пиктографические кнопки, назовите их функции.
Что позволяет сделать палитра компонентов?
Назовите средства интегрированной среды разработки (IDE).
Задание