Сборка очень маленьких программ в borland c builder


Содержание

Кто работал в Borland Builder ?

Я знаю, что сайт про линукс, но може кто-нибудь работал в Borland C++ Builder , у меня проблема с библиотеками. Запускаю на чужой машине, программа говорит что нет vcl50.bpl, копирую его, просит borlandmm.dll. Как включить все, что надо еще при компиляции ?

Re: Кто работал в Borland Builder ?

Re: Кто работал в Borland Builder ?

vcl50.bpl — это библиотека компонентов Борланд. Ошибка возникает из-за того, что ты создаешь экзешник, который грузит все необходимые ему части программы — vcl50.bpl, borlandmm.dll — динамически, и поэтому, на другой машине, где не стоИт Борланд твоя программа не может ничего загрузить. Для того, чтобы избавиться от ошибки, просто напросто надо сбилдить программу статически. В этом случае намного увеличится размер программы, но зато, она будет идти вне зависимости от стандартных Борландовских компонент. Смотри настройки проекта для замены динамической линковки на статическую.

Re: Re: Кто работал в Borland Builder ?

Большое спасибо, буду искать, но если можно — чуть конкретней (где это искать) , там так много настроек, что я путаюсь.

Re: Кто работал в Borland Builder ?

Borland C++ Builder 5.0 английская версия:
Открыть проект (новый или уже существующий) и из главного меню: Project->Options. Появится окно настроек проекта. В этом окне клацнуть на закладке Linker (левый верхний угол) и внутри GroupBox Linking отменить пометку CheckBoxa Use dinamic RTL. Потом клацнуть на закладке Packages и в GroupBoxe Runtime packages (внизу окна) отменить пометку CheckBoxa Build with runtime packages. Клацнуть по кнопке OK в самом низу и сделать Build всему проекту. Таким образом поимеем Борланд-независимую программу. :)

Re: Re: Кто работал в Borland Builder ?

Все заработало. Большое спасибо. Правда файл получился большой, но это уже мелочи.

Borland C++ Builder 6 для начинающих (статья первая)

В данной статье рассказывается о том, как легко и просто освоить один из новых продуктов Borland C++ Builder 6.0 для разработки программ и быстро начать создавать собственные программы, работающие в операционной системе Windows.

Я решил написать данную статью потому, что сам прошел непростой путь обучении Borland C++ Builder и хотел бы эначи телыю облегчить процесс освоении этого продукта новичками. Сегоднн я могу с уверенностью сказать, что процесс создания Программ на Borland C++ Builder является не только простым и понятным, но самое главное — творческим, полезным и захватывающим занятием. Написав свою первую программу в ЭТОМ пакете, вы наверняка не сможете остановиться и начнете творить. Я не претендую на звание программиста, т. к. в основном занимаюсь схемотехникой. По поскольку н настоящее время электронная техника органично включает в себя микроконтроллеры и процессоры, которые необходимо программировать, а компьютеры становятся привычными инструментами, также требующими программирования, становится очевидным, что программированием необходимо овладевать. Эти знания позволят самостоятельно создавать тестовые программы, утилиты и несложные программно-инструментальные средства для отладки и тестирования схемотехнических устройств, а также позволят создавать различные электронные устройства с программной поддержкой.

Данная статья не претендует на полное и детальное описание программного продукта Borland C++ Builder 6.0, но благодаря своей компактности она позволяет не боясь большого объема материала для изучения начать осваивать этот пакет и быстро научиться писать свои программы. Работать в среде Borland C++ Builder 6.0 может любой пользователь компьютера» имеющий хотя бы минимальные знания о программировании» например из программы школьного курса. Постепенно этот человек может увлечься и стать настоящим программистом. В своем изложении я хочу, не отягощая избыточностью материала, увлечь в этот удивительный и прекрасный мир программирования. Хочу дать первый импульс к творчеству и ключ к простому пониманию непростых специальных понятий и терминов. Программы разрабатываются в данном пакете настолько просто и легко, что после первых упражнений с этим продуктом с ним уже не хочется расставаться никогда. Мы вместе с вами не только изучим основные инструменты пакета Borland C++ Builder, но и напишем свои первые программы с поразительной быстротой и легкостью. И я думаю, что после этого вы сами захотите читать больше и больше об этом удивительном продукте. Самое главное — все, что вы прочтете здесь, необходимо закреплять практикой при работе на компьютере. Только так, с помощью практики можно добиться хороших и прочных знаний в любом полезном деле. Не пытайтесь усвоить весь материал за один присест. Не ленитесь перечитать то, что не поняли или недопоняли или забыли.

Новые понятия обычно усваиваются только после третьего прочтения. Придерживайтесь этих правил, и вы обязательно добьетесь успеха.
Далее в тексте я буду использовать некоторые специальные термины, поясняя по ходу изложения, что они означают. Эти термины являются общеупотребительными для программистов, и к ним необходимо привыкнуть. В дальнейшем это очень поможет в изучении и освоении новых программных продуктов и специальной технической литературы. Одним из первых таких терминов является объектно-ориентированное программирование — ООП. Данный термин означает, что при разработке программ не требуется продумывать весь алгоритм работы программы от начала и до конца, как это делалось в структурном программировании. Именно таким продуктом является Borland C++ Builder 6.0 и ему подобные пакеты для создания программ под Windows. OOII дает возможность писать программу постепенно, шаг за шагом, создавая отдельные небольшие программы (функции-методы) для обработки действий (событий), вызываемых объектами (кнопками и окнами программы, кнопками клавиатуры и т.п.).

УСТАНОВКА
В настоящее время инсталляционный (установочный) пакет Borland C++ Builder 6.0 можно приобрести на компакт-диске (CD) во многих магазинах по доступной цене. Установка данного пакета не вызывает сложностей и подробно расписана на упаковке самого компакт-диска, в тексте инсталлятора или в справочном файле (типа readme.txt), входящем в инсталляционный пакет. Поскольку программа может быть установлена в нескольких редакциях (вариантах), от самого простого до профессионального уровня, выберите для начала самый простой или типовой вариант установки. Вместо предлагаемого для установки каталога с длинным названием C:\Program Files\ Borland C++ Builder 6\ рекомендую создать каталог с коротким названием С:\СВ6\ и установить пакет именно в него. 11ри запросе на установку специального пакета СОКВА для базы данных можно отключить галочку установки. В дальнейшем вы всегда сможете установить необходимые компоненты пакета по мере необходимости в них.

НАЧАЛО
После установки пакета в меню программ компьютера появится новый раздел на английском языке пол названием Borland C++ Builder 6, в который входит множество программ и справочных файлов. Со временем эти программы станут привычными и понятными инструментами для вас. Поэтому не пугайтесь их изобилия и замысловатости названий. Для начала работы в среде Borland C++ Builder 6.0 нам понадобится только один файл C:CB6\Bin\bcb.exe. Из него мы сможем вызывать остальные программы пакета по мере необходимости. Я советую поместить значок (ярлык) этой программы на рабочий стол (экран) компьютера для последующего быстрого и простого поиска и запуска этой программы. Для этого необходимо свернуть все окна запущенных на компьютере программ или закрыть их. Далее необходимо найти через 11уск—^Программы—» Borland C++ Builder программу C++ Builder 6, нажать левую кнопку мышки и, удерживая нажатой кнопку мыши и клавишу Ctrl (для копирования) перенести ярлык программы на свободное место рабочего стола. Теперь можно запустить программу C++ Builder 6, щелкнув на ее значке» помещенном на рабочем столе, два раза левой клавишей мышки.
После запуска программы на экране монитора появится окно, изображенное на рис. 1, которое демонстрирует процесс загрузки программы Borland C++ Builder 6.0.

Это окно может отображаться несколько секунд, пока программа загружается.

ИНТЕРФЕЙС
После загрузки программы это окно сменяется новыми окнами. Все эти окна представляют собой интерфейс программы Borland C++ Builder 6.0, который изображен на рис. 2.

В терминах программистов этот интерфейс называется средой быстрой разработки приложений RAD, сокращение от английских слов Rapid Application Development. Такое название этот интерфейс получил за то, что создание программы в нем сводится в основном к простому конструированию окна будущей программы из готовых кубиков, а большую часть стандартных и рутинных операций за человека выполняет компьютер. Например, компьютер создает автоматически заготовку текста программы для функций обработки событий.
В верхнем окне интерфейса программы расположена строка заголовка C++ Builder 6-Projectl. Она отражает название всего программного пакета и имя нового проекта. Проектом называется вся группа файлов, которые необходимы для создания конечной исполняемой программы. Так, например, в состав проекта могут включаться файлы с текстами программ, файл ресурсов с рисунками курсоров и иконок (значков), звуковые файлы и т. п. Первоначально проект хранится в памяти компьютера, и для того, чтобы сохранить его на диске, необходимо будет выполнить стандартные операции сохранения, создав при этом отдельную пайку. Кроме того, интерфейс сам предложит вам сохранить проект, если вы решите выйти из программы или попытаетесь создать новый проект.
Так же на строке заголовка находятся кнопки свертывания, восстановления и закрытия окна. Под заголовком находится строка главного меню, которая предоставляет доступ ко всем функция и командам программы. Под главным меню находятся быстрые кнопки, объединенные в группы по назначению. Они позволяют получить быстрый доступ к наиболее часто используемым командам. Справа от быстрых кнопок расположена палитра визуальных компонентов VCL. Это те самые объекты или программные компоненты, предназначенные для быстрого создания программы для Windows. В их число входят кнопки, рисунки, надписи, таймеры, календари и т. д. Палитра состоит из нескольких закладок, на которых располагаются визуальные компоненты, распределенные по группам. Именно с этими компонентами мы будем создавать новые программы. При малых разрешениях экрана все эти закладки не умещаются в пределах рабочей области экрана. Для получения доступа к ним необходимо воспользоваться кнопками прокрутки (стрелками), которые расположены в правой верхней части палитры компонентов. Подведите курсор к одной из кнопок и нажмите левую кнопку мыши. При этом закладки сдвинутся и появится та группа, которая первоначально не отображалась (была недоступна). В левой нижней части экрана располагается инспектор объектов Object Inspector. В этом окне производится настройка основных свойств визуальных компонентов. Расположение окна инспектора объектов в программе не фиксировано и при желании его можно переместить в ту часть рабочей области программы, которая для вас наиболее удобна. Для этого необходимо нажать левую кнопку мыши на строке заголовка окна и, удерживая ее, переместить окно. Над окном инспектора объектов расположено окно просмотра объектов Object Tree View. Оно отображает в виде дерева всю структуру проекта, состоящего из форм, кодов (текстов) программ и других ресурсов (файлов). Справа от инспектора объектов располагается окно дизайнера форм (окон будущей программы). Это окно содержит строку заголовка, в котором отображается название формы Forml (созданное по умолчанию) и кнопки управления окном. Над ним располагается окно редактора кода Unitl.cpp, (также созданное по умолчанию) в котором производится набор и редактирование кода программы.
Советую вам некоторое время самостоятельно познакомиться с этим интерфейсом для того, чтобы вы привыкли к нему и появились вопросы, на которые хочется получить ответы. Ведь только интерес порождает процесс изучения. Данный интерфейс будет нашим самым главным инструментом при создании программ.

ПЕРВАЯ ПРОГРАММА
Думаю, многим читателям уже не терпится написать первую программу под Windows. Пожалуйста, нет ничего проще. Фактически она уже написана, и сделал это за вас RAD интерфейс. Выполните команду Run из главного меню Run или щелкните левой кнопкой мышки по зеленой кнопкестрелке на панели быстрых кнопок или просто нажмите клавишу F9 на клавиатуре. После этого произойдет компиляция проекта (преобразование программы в машинный код, понятный компьютеру) с отображением на экране окна, подобного изображенному на рис. 3, и программа запустится.

На экране появится изображение пустого окна вашей первой программы (рис. 4).

В верхней части этой программы будет виден фирменный значок пакета Borland C++ Builder и название окна программы Forml. Итак, мы создали новую программу, не написав при этом ни строчки кода! Какая же польза от такой программы? Что она умеет делать? Пока не очень много, но кое-что все же умеет. Во-первых, мы получили полноценное оконное приложение, которое работает в операционной системе Windows. Во-вторых, это приложение имеет интерфейс Windows и привычные стандартные органы управления, расположенные справа вверху. Вы можете сворачивать данное приложение и разворачивать его на весь экран, изменять размеры окна программы и перемещать его с помощью мышки. А мы с вами создали такую программу в считанные секунды. Конечно же, это заслуга RAD интерфейса. Именно благодаря такому интерфейсу нам удалось создать приложение так быстро и легко. Это одно из его замечательных свойств, поэтому он и получил очень большое распространение и признание во всем мире. Обратите внимание, что при сворачивании приложение будет иметь имя Project 1. Теперь перед нами встают вопросы, как сделать наше приложение полезным, изменить его название и значок и т. д. Очень хорошо, что эти вопросы появились. Они пробуждают в нас интерес и жажду к знаниям — основной источник прогресса. Остановим работу нашей программы, щелкнув левой клавишей мышки по крестику в верхней правой части ее окна и продолжим обучение.
Теперь рассмотрим более подробно каждое из описанных выше окон интерфейса и других органов управления пакета Borland C++ Builder 6.0.

ГЛАВНОЕ МЕНЮ
Главное меню предоставляет доступ к основным командам программы Borland C++ Builder 6.0, объединенным в группы.
Первая группа меню под названием File (Файл) изображена на рис. 5.

Команды этого меню осуществляют работу с файлами и предоставляют доступ к операциям создания (New) новых форм (окон) и приложений, открытия (Open), сохранения (Save) и закрытия (Close) файлов и проектов, печати текстов программ (Print) и добавления заголовков модулей (Include), т. е. файлов с расширением h. Обратите внимание на то, что перед некоторыми командами этого и последующих меню находятся значки-иконки. Эти же значки изображены на кнопках быстрого запуска, что позволяет без труда понять их назначение. Кроме того, справа от некоторых команд меню написано соответствие команд горячим клавишам, т. е. клавишам, с помощью которых вызывается данная команда. Еще правее этих надписей кое-где имеются треугольные стрелки, которые говорят о том, что данная команда имеет расширенные возможности, которые становятся доступными после наведения на эту стрелку курсора мышки.

Вторая по порядку группа команд меню называется Edit (Редакторова-ние), она изображена на рис. 6.

В этом меню собраны команды редактирования, такие как отмена (Undelete) и повторение (Redo) операций, вырезание (Cut), копирование (Сору) вставка (Paste) и удаление (Delete), команды выделения всего текста (Select All), выравнивания компонентов (Align) и настройки редактора кода (текста программы).

Следующая группа команд Search (Поиск) изображена на рис. 7.

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

Группа команд View (Вид) изображена на рис. 8.

Из этого пункта меню вызываются основные диалоговые окна управления проектом и компонентами, такие как менеджер проектов Project Manager, список компонентов Component List и список окон Windows List Также из этого пункта меню открываются все окна отладки программ Debug Windows, работу с которыми мы рассмотрим позже.

Группа команд Project (Проект) приведена на рис. 9.

В этом меню собраны команды управления проектом. С их помощью можно добавлять и удалять модули (файлы с текстами программ), добавить библиотеку компонентов VCL, откомпилировать проект и так далее.

Группа команд Run (Выполнить) изображена на рис. 10.

С помощью команд этого меню выполняется запуск и останов программ, запуск программ в непрерывном и пошаговом режимах, добавление переменных для просмотра, установка точек останова и другие действия по отладке программы.

Группа команд Component (Компонент) представлена на рис. 11.

БЫСТРЫЕ КНОПКИ
Быстрые кнопки расположены под главным меню (рис. 2). С их помощью осуществляется быстрый доступ к основным и часто используемым командам главного меню. Все эти кнопки имеют вплывающие меню, появляющиеся при наведении на них курсора мыши, и горячие клавиши, показываемые в скобках. Все быстрые кнопки также, как и главное меню, разделены на группы.
Кнопки Standard (Стандартные) позволяют создавать новые объекты программы. Для этого необходимо нажать кнопку New. При этом появится диалоговое окно New Items, в котором можно выбрать необходимый для создания программы объект. Также кнопки этой группы позволяют сохранять (Save) и открывать (Open) как отдельные файлы, так и целые проекты. Замыкают группу две кнопки управления проектами, с помощью которых можно добавлять файлы к проекту (Add File To Project) и удалять их из него (Remove File From Project).
Кнопки View (Вид). В эту группу собраны кнопки, управляющие просмотром форм и модулей, а также кнопка создания новой формы. Для создания новой формы необходимо нажать кнопку New Form. При этом появится новое окно дизайнера форм в заголовке, в котором будет отображаться название новой формы Form2. Для переключения между формой и редактором кода служит кнопка Toggle Form Unit (F12). Если в вашей программе используется несколько форм, то с помощью кнопки View Form (Shift+F12) вы можете выбрать форму для просмотра.
Кнопки Debug (Отладка). В этой группе собраны кнопки для отладки программы. Кнопка Run (F9) запускает проект на выполнение. Кнопка Pause позволяет приостановить выполнение проекта. С помощью кнопок Trace Into (F7) и Step over (F8) задается запуск программ в пошаговом режиме для детальной отладки программы. Положение кнопок быстрого доступа в среде разработки не фиксировано и их можно разместить на главной панели по своему усмотрению. Для этого необходимо подвести курсор к левому краю группы кнопок и, нажав и удерживая левую кнопку мыши, переместить группу на новое место. Если группа вынесена за пределы главной панели, ей отводится отдельное окно. Кроме того, нажав правую кнопку мыши на панели быстрых кнопок, можно открыть окно для настройки отображения любой группы кнопок на главной панели системы.

Borland C++ Builder

Работа в Borland C++ Builder. 3

Среда разработки C++ Builder 3

Компоненты C++ Builder 3

Свойства компонентов. 4

Менеджер проектов. 5

Создание приложений в C++ Builder 6

Компоненты Borland C++ Builder. 8

Выбор компонентов для групповых операций. 8

Установка разделяемых свойств компонентов. 8

Изменение размера компонентов. 8

Выравнивание компонентов. 9

Работа с базами данных в Borland C++ Builder. 11

Компонент TDataSource. 11

Компонент TTable. 12

Компонент TField. 15

Компонент TDBGrid. 17

Поставка приложений, созданных с помощью С++ Builder. 19

Поставка исполняемых файлов. 19

Установка и настройка Borland Database Engine. 19

Установка дополнительных компонентов приложения. 21

Способы создания дистрибутивов. 22

Создание дистрибутивов с помощью InstallShield Express. 23

Список использованной литературы.. 27

Работа в Borland C++ Builder

Среда разработки C++ Builder

C++ Builder представляет собой SDI-приложение, главное окно которого содержит настраиваемую инструментальную панель (слева) и палитру компонентов (справа). Помимо этого, по умолчанию при запуске C++ Builder появляются окно инспектора объектов (слева) и форма нового приложения (справа). Под окном формы приложения находится окно редактора кода.

Формы являются основой приложений C++ Builder. Создание пользовательского интерфейса приложения заключается в добавлении в окно формы элементов объектов C++ Builder, называемых компонентами. Компоненты C++ Builder располагаются на палитре компонентов, выполненной в виде многостраничного блокнота. Важная особенность C++ Builder состоит в том, что он позволяет создавать собственные компоненты и настраивать палитру компонентов, а также создавать различные версии палитры компонентов для разных проектов.

Компоненты C++ Builder

Компоненты разделяются на видимые (визуальные) и невидимые (невизуальные). Визуальные компоненты появляются во время выполнения точно так же, как и во время проектирования. Примерами являются кнопки и редактируемые поля. Невизуальные компоненты появляются во время проектирования как пиктограммы на форме. Они никогда не видны во время выполнения, но обладают определенной функциональностью (например, обеспечивают доступ к данным, вызывают стандартные диалоги Windows и др.)

Для добавления компонента в форму можно выбрать мышью нужный компонент в палитре и щелкнуть левой клавишей мыши в нужном месте проектируемой формы. Компонент появится на форме, и далее его можно перемещать, менять размеры и другие характеристики.

Каждый компонент C++ Builder имеет три разновидности характеристик: свойства, события и методы.

Если выбрать компонент из палитры и добавить его к форме, инспектор объектов автоматически покажет свойства и события, которые могут быть использованы с этим компонентом. В верхней части инспектора объектов имеется выпадающий список, позволяющий выбирать нужный объект из имеющихся на форме.

Свойства компонентов

Свойства являются атрибутами компонента, определяющими его внешний вид и поведение. Многие свойства компонента в колонке свойств имеют значение, устанавливаемое по умолчанию (например, высота кнопок). Свойства компонента отображаются на странице свойств (Properties). Инспектор объектов отображает опубликованные (published) свойства компонентов. Помимо published-свойств, компоненты могут и чаще всего имеют общие (public), опубликованные свойства, которые доступны только во время выполнения приложения. Инспектор объектов используется для установки свойств во время проектирования. Список свойств располагается на странице свойств инспектора объектов. Можно определить свойства во время проектирования или написать код для видоизменения свойств компонента во время выполнения приложения.

При определении свойств компонента во время проектирования нужно выбрать компонент на форме, открыть страницу свойств в инспекторе объектов, выбрать определяемое свойство и изменить его с помощью редактора свойств (это может быть простое поле для ввода текста или числа, выпадающий список, раскрывающийся список, диалоговая панель и т.д.).

События

Страница событий (Events) инспектора объектов показывает список событий, распознаваемых компонентом (программирование для операционных систем с графическим пользовательским интерфейсом, в частности, для Windows 95 или Windows NT пре полагает описание реакции приложения на те или иные события, а сама операционная система занимается постоянным опросом компьютера с целью выявления наступления какого-либо события). Каждый компонент имеет свой собственный набор обработчиков событий. В C++ Builder следует писать функции, называемые обработчиками событий, и связывать события с этими функциями. Создавая обработчик того или иного события, вы поручаете программе выполнить написанную функцию, если это событие произойдет.

Для того чтобы добавить обработчик событий, нужно выбрать на форме с помощью мыши компонент, которому необходим обработчик событий, затем открыть страницу событий инспектора объектов и дважды щелкнуть левой клавишей мыши на колонке значений рядом с событием, чтобы заставить C++ Builder сгенерировать прототип обработчика событий и показать его в редакторе кода. При этом автоматически генерируется текст пустой функции, и редактор открывается в том месте, где следует вводить код. Курсор позиционируется внутри операторных скобок < . >. Далее нужно ввести код, который должен выполняться при наступлении события. Обработчик событий может иметь параметры, которые указываются после имени функции в круглых скобках.

Методы

Метод является функцией, которая связана с компонентом, и которая объявляется как часть объекта. Создавая обработчики событий, можно вызывать методы, используя следующую нотацию: ->, например:

Отметим, что при создании формы связанные с ней модуль и заголовочный файл с расширением *.h генерируются обязательно, тогда как при создании нового модуля он не обязан быть связан с формой (например, если в нем содержатся процедуры расчетов). Имена формы и модуля можно изменить, причем желательно сделать это сразу после создания, пока на них не появилось много ссылок в других формах и модулях.

Менеджер проектов

Файлы, образующие приложение — формы и модули — собраны в проект. Менеджер проектов показывает списки файлов и модулей приложения и позволяет осуществлять навигацию между ними. Можно вызвать менеджер проектов, выбрав пункт меню View/Project Manager. По умолчанию вновь созданный проект получает имя Project1.cpp.

По умолчанию проект первоначально содержит файлы для одной формы и исходного кода одного модуля. Однако большинство проектов содержат несколько форм и модулей. Чтобы добавить модуль или форму к проекту, нужно щелкнуть правой кнопкой мыши и выбрать пункт New Form из контекстного меню. Можно также добавлять существующие формы и модули к проекту, используя кнопку Add контекстного меню менеджера проектов и выбирая модуль или форму, которую нужно добавить. Формы и модули можно удалить в любой момент в течение разработки проекта. Однако, из-за того, что форма связаны всегда с модулем, нельзя удалить одно без удаления другого, за исключением случая, когда модуль не имеет связи с формой. Удалить модуль из проекта можно, используя кнопку Remove менеджера проектов.

Если выбрать кнопку Options в менеджере проектов, откроется диалоговая панель опций проекта, в которой можно выбрать главную форму приложения, определить, какие формы будут создаваться динамически, каковы параметры компиляции модулей (в том числе созданных в Delphi, так как C++ Builder может включать их в проекты) и компоновки.

Важным элементом среды разработки C++ Builder является контекстное меню, появляющееся при нажатии на правую клавишу мыши и предлагающее быстрый доступ к наиболее часто используемым командам.

Разумеется, C++ Builder обладает встроенной системой контекстно-зависимой помощи, доступной для любого элемента интерфейса и являющейся обширным источником справочной информации о C++ Builder.

Создание приложений в C++ Builder

Первым шагом в разработке приложения C++ Builder является создание проекта. Файлы проекта содержат сгенерированный автоматически исходный текст, который становится частью приложения, когда оно скомпилировано и подготовлено к выполнению. Чтобы создать новый проект, нужно выбрать пункт меню File/New Application.

C++ Builder создает файл проекта с именем по умолчанию Project1.cpp, а также make-файл с именем по умолчанию Project1.mak. При внесении изменений в проект, таких, как добавление новой формы, C++ Builder обновляет файл проекта.

Проект или приложение обычно имеют несколько форм. Добавление формы к проекту создает следующие дополнительные файлы:

  • Файл формы с расширением .DFM, содержащий информацию о ресурсах окон для конструирования формы
  • Файл модуля с расширением .CPP, содержащий код на C++.
  • Заголовочный файл с расширением .H, содержащий описание класса формы.

Когда вы добавляете новую форму, файл проекта автоматически обновляется.

Для того чтобы добавить одну или более форм к проекту , выберите пункт меню File/New Form. Появится пустая форма, которая будет добавлена к проекту. Можно воспользоваться пунктом меню File/New, выбрать страницу Forms и выбрать подходящий шаблон из репозитория объектов.

Для того, чтобы просто откомпилировать текущий проект, из меню Compile нужно выбрать пункт меню Compile. Для того чтобы откомпилировать проект и создать исполняемый файл для текущего проекта, из меню Run нужно выбрать пункт меню Run. Компоновка проекта является инкрементной (перекомпилируются только изменившиеся модули).

Если при выполнении приложения возникает ошибка времени выполнения, C++ Builder делает паузу в выполнении программы и показывает редактор кода с курсором, установленным на операторе, являющемся источником ошибки. Прежде чем делать необходимую коррекцию, следует перезапустить приложение, выбирая пункт меню Run из контекстного меню или из меню Run, закрыть приложение и лишь затем вносить изменения в проект. В этом случае уменьшится вероятность потери ресурсов Windows.

Компоненты Borland C++ Builder

Выбор компонентов для групповых операций

Для эффективной разработки пользовательских интерфейсов приложений C++ Builder нередко возникает необходимость в манипулировании компонентами на формах. Большинство операций для манипулирования компонентами находятся в меню Edit: К различным опциям этого меню следует обращаться после того, как на форме вы ран один или несколько компонентов, свойства которых требуется изменить.

Выбрать один компонент можно следующими способами:

  • Выбрав с помощью мыши компонент на форме
  • Выбрав имя компонента в селекторе объектов.
  • Переходом к компоненту на форме, нажимая клавишу Tab.

Выбрать несколько компонентов можно следующими способами:

  • Удерживая нажатой клавишу Shift, щелкнуть мышью на каждом компоненте.
  • Нажать левую клавишу мыши и окружить нужные компоненты прямоугольным контуром.

Установка разделяемых свойств компонентов

Большинство визуальных компонентов имеют общие свойства, (например, Visible, Width, Left). Для установки одинаковых значений общих свойств для нескольких компонентов необходимо выполнить следующие действия:

1. Выбрать несколько настраиваемых компонентов. При этом страница свойств объектов будет отображать только те свойства, которые имеются у всех выбранных компонентов.


2. Установить значения свойств, общих для выделенных компонентов.

Изменение размера компонентов

Изменение размера компонента можно проводить как при добавлении его на форму, так и после этого.

При добавлении компонента следует выбрать его на палитре компонентов. Далее нужно поместить курсор мыши на форму, нажать левую клавишу и перемещать мышь, в результате чего на форме появится прямоугольник, изображающий границы будущего компонента. Когда прямоугольник приобретет необходимые размеры, нужно отпустить кнопку мыши.

Если перевести курсор мыши на один из появившихся вокруг компонента маленьких черных квадратиков, курсор мыши изменяет форму. Перемещая этот курсор и вместе с ним границу компонента, можно изменять его размеры.

Для изменения размеров нескольких компонентов следует выбрать их одним из описанных выше способов. Далее нужно выбрать пункт меню Edit/Size. Появится диалоговое окно Size. Выберите опции размера. Для точной установки размера в пикселях можно ввести числа в поля Width и Height. Далее нужно нажать кнопку OK.

Можно добавить несколько копий компонента одного типа, выбирая компонент из палитры при нажатой клавише Shift. В этом случае вокруг компонента появляется прямоугольник, окружающий этот компонент. После этого каждый щелчок мышью на форме приводит к появлению на ней копии компонента. Закончив режим многократного копирования, следует щелкнуть мышью на инструменте выбора курсора (первая кнопка на палитре компонентов с изображением стрелки).

Илон Маск рекомендует:  Кнопки навигации вперед, назад, обновить

Выравнивание компонентов

Для выравнивания компонентов на форме можно использовать следующие комбинации клавиш:

Изменяет размер компонента на один пиксель в направлении выбранной стрелки

Shift + Ctrl + стрелки

Перемещает компонент на одну единицу сетки в направлении выбранной стрелки

Перемещает компонент на один пиксель в направлении выбранной стрелки

Можно также выровнять компоненты, используя пункт меню View/Alignment Palette. Для этого нужно:

1. Выбрать компоненты для выравнивания.

2. Выбрать пункт меню View/Alignment Palette.

3. Выбрать нужную кнопку.

Можно выровнять компоненты, используя пункт меню Edit/Align. Для этого нужно:

1. Выбрать компоненты для выравнивания.

2. Выбрать пункт меню Edit/Align. Появится диалоговое окно Alignment.

3. Выбрать нужную опцию и нажать на кнопку OK.

Можно изменить условия выравнивания компонент, используя пункт меню Options/Environment. Для этого нужно:

1. Выбрать пункт меню Options/Environment. Диалоговое окно Environment появится открытым на странице Preferences.

2. В группе Form designer можно выбрать следующие опции:

  • Display grid — сделать сетку из точек на форме видимой для выравниваемых компонентов
  • Snap to grid — заставить левые и верхние стороны компонентов расположиться на линиях сетки.

3. Для того, чтобы изменить расстояние между узлами сетки, нужно ввести новые значения вместо имеющихся. Значение по умолчанию — 8 пикселей по оси X (по горизонтали) и по оси Y (по вертикали).

Работа с базами данных в Borland C++ Builder.

Используя Borland C++ Builder, можно создать приложения, работающие как с однопользовательскими базами данных (БД), так и с серверными СУБД, такими как Oracle, Sybase, Informix, Interbase, MS SQL Server, DB2, а также с ODBC-источниками. Возможности C++ Builder, связанные с созданием приложений, использующих базы данных, весьма обширны для того, чтобы описать их в одной статье. Поэтому сегодня мы рассмотрим лишь простейшие возможности работы с таблицами баз данных.

Набор данных в C++ Builder — это объект, состоящий из набора записей, каждая из которых, в свою очередь, состоит из полей, и указателя текущей записи. Набор данных может иметь полное соответствие с реально существующей таблицей или быть результатом запроса, он может быть частью таблицы или объединять между собой несколько таблиц.

Набор данных в C++ Builder является потомком абстрактного класса TDataSet (абстрактный класс — это класс, от которого можно порождать другие классы, но нельзя создать экземпляр объекта данного класса). Например, классы TQuery, TTable и TStoredProc, содержащиеся на странице палитры компонентов Data Access, — наследники TDBDataSet, который, в свою очередь, является наследником TDataSet. TDataSet содержит абстракции, необходимые для непосредственного управления таблицами или запросами, обеспечивая средства для того, чтобы открыть таблицу или выполнить запрос и перемещаться по строкам.

Компонент TDataSource

Компонент DataSource действует как посредник между компонентами TDataSet (TTable, TQuery, TStoredProc) и компонентами Data Controls — элементами управления, обеспечивающими представление данных на форме. Компоненты TDataSet управляют связями с библиотекой Borland Database Engine (BDE), а компонент DataSource управляет связями с данными в компонентах Data Controls.

В типичных приложениях БД компонент DataSource, как правило, связан с одним компоненом TDataSet (TTable или TQuery) и с одним или более компонентами Data Controls (такими, как DBGrid, DBEdit и др.). Связь этого компонента с компонентами TDataSet и DataControls осуществляется с использованием следующих свойств и событий:

  • Свойство DataSet компонента DataSource идентифицирует имя компонента TDataSet. Можно присвоить значение свойству DataSet на этапе выполнения или с помощью инспектора объектов на этапе проектирования.
  • Свойство Enabled компонента DataSource активизирует или останавливает взаимосвязь между компонентами TDataSource и Data Controls. Если значение свойства Enabled равно true, то компоненты Data Controls, связанные с TDataSource, воспринимают изменения набора данных. Использование свойства Enabled позволяет временно разъединять визуальные компоненты Data Controls и TDataSource, например, для того, чтобы в случае поиска в таблице с большим количеством записей не отображать на экране пролистывание всей таблицы.
  • Свойство AutoEdit компонента DataSource контролирует, как инициируется редактирование в компонентах Data Controls. Если значение свойства AutoEdit равно true, то режим редактирования начинается непосредственно при получении фокуса компонентом Data Controls, связанным с данным компонентом TDataSet. В противном случае режим редактирования начинается, когда вызывается метод Edit компонента TDataSet, например, после нажатия пользователем кнопки Edit на компоненте DBNavigator. · Событие OnDataChange компонента DataSource наступает, когда происходит изменение значения поля, записи, таблицы, запроса.
  • Событие OnUpdateData компонента DataSource наступает, когда пользователь пытается изменить текущую запись в TDataSet. Обработчик этого события следует создавать, когда требуется соблюсти условия ссылочной целостности или ограничения, накладываемые на значения полей изменяемой базы данных.

Компонент TTable

Наиболее простым способом обращения к таблицам баз данных является использование компонента TTable, предоставляющего доступ к одной таблице. Для этой цели наиболее часто используются следующие свойства:

  • Active — указывает, открыта (true) или нет (false) данная таблица.
  • DatabaseName — имя каталога, содержащего искомую таблицу, либо псевдоним (alias) удаленной БД (псевдонимы устанавливаются с помощью утилиты конфигурации BDE, описание которой присутствует во многих источниках, посвященных продуктам Borland, либо с помощью SQL Explorer, вызываемого с помощью пункта меню Database/Explore). Это свойство может быть изменено только в случае, если таблица закрыта (ее свойство Active равно false), например:

Table1->Active = false;
Table1->DatabaseName = «BCDEMOS»
Table1->Active = true;

  • TableName — имя таблицы.
  • Exclusive — если это свойство принимает значение true, то никакой другой пользователь не может открыть таблицу, если она открыта данным приложением. Если это свойство равно false (значение по умолчанию), то другие пользователи могут открывать эту таблицу.
  • IndexName — идентифицирует вторичный индекс для таблицы. Это свойство нельзя изменить, пока таблица открыта.
  • MasterFields — определяет имя поля для создания связи с другой таблицей.
  • MasterSource — имя компонента TDataSource, с помощью которого TTable будет получать данные из связанной таблицы.
  • ReadOnly — если это свойство равно true, таблица открыта в режиме «только для чтения». Нельзя изменить свойство ReadOnly, пока таблица открыта.
  • Eof, Bof — эти свойства принимают значение true, когда указатель текущей записи расположен на последней или соответственно первой записи таблицы.
  • Fields — массив объектов TField. Используя это свойство, можно обращаться к полям по номеру, что удобно, когда заранее неизвестна структура таблицы:

Наиболее часто при работе с компонентом TTable используются следующие методы:

  • Open и Close устанавливают значения свойства Active равными True и False соответственно.
  • Refresh позволяет заново считать набор данных из БД.
  • First, Last, Next, Prior перемещают указатель текущей записи на первую, последнюю, следующую и предыдущую записи соответственно, например:

Table1->First();
while (!Table1->Eof)
<
//что-то делаем.
Table1->Next();
>;

  • MoveBy перемещает указатель на указанное число строк (оно может быть и отрицательным) в пределах таблицы
  • Insert, Edit, Delete, Append — переводят таблицу в режимы вставки записи, редактирования, удаления, добавления записи соответственно.
  • Post — осуществляет физическое сохранение измененных данных. Например:

Table2->Insert();
Table2->Fields[0]->AsInteger = 100;
Table2->Fields[1]->AsString =Edit1->Text;
Table2->Post();

  • Cancel — отменяет внесенные изменения, не сохраненные физически.
  • FieldByName — предоставляет возможность обращения к данным в полях по имени поля:
  • SetKey переключает таблицу в режим поиска.
  • GotoKey начинает поиск строки, значение Fields[n] которой равно выбранному, где n — номер колонки таблицы, начиная с 0:

Table1->SetKey();
Table1->Fields[0]->AsString=Edit1->Text;
Table1->GotoKey();

  • SetRangeStart, SetRangeEnd, ApplyRange позволяют выбрать нужные строки на основе диапазона значений какого-либо поля.

Table1->SetRangeStart();
Table1->Fields[0]->AsString = Edit1->Text;
Table1->SetRangeEnd();
Table1->Fields[0]->AsString = Edit2->Text;
Table1->ApplyRange();

  • FreeBookmark, GetBookmark, GotoBookmark- позволяют создать помеченную строку в таблице и затем вернуться к ней позже. Методы Bookmark используют класс TBookmark. Метод GetBookmark устанавливает закладку на текущей cтроке таблицы. GotoBookmark осуществляет перемещение в таблице к строке, ранее отмеченной закладкой. Метод FreeBookmark используется для уничтожения объекта типа TBookmark:

TBookmark Marker =Table1->GetBookmark();
Table1->GotoBookmark(Marker);
Table1->FreeBookmark(Marker);

Cобытия компонента TTable позволяют строить и контролировать поведение приложе ий БД. Например, событие BeforePost наступает перед вставкой или изменением записи, событие AfterPost — после сохранения вставленной или измененной записи, событие AfterDelete — после удаления записи и т.д.

Чтобы внести компонент TTable в форму, нужно выполнить следующее:

1. Используя страницу Data Access палитры компонентов, разместить компонент TTable на форме или в модуле данных.

2. Свойству DatabaseName присвоить имя каталога, где находится БД, либо псевдо има БД.

3. Свойству TableName присвоить имя таблицы или выбрать таблицу из выпадающего списка.

4. Внести в форму компонент DataSource и установить значение свойства DataSet равным имени компонента TTable.

5. Внести компоненты Data Controls и связать их с компонентом DataSource для того, чтобы отобразить на экране данные из таблицы БД.

Компонент TField

Объекты класса TField являются свойством объекта TDataSet (напомним, что некоторые свойства объектов сами являются объектами с их собственными наборами свойств, и TField — один из них).

Свойство Fields объекта типа TDataSet позволяет обращаться к отдельным полям набора данных. Свойство Fields является массивом или набором объектов TField, динамически создающимся во время выполнения приложения. Элементы массива соответствуют колонкам таблицы.

Объект TField не делает никаких предположений относительно типов данных, с которыми он связан. Он имеет несколько свойств, позволяющих установить или вернуть обратно значения поля, например, AsString, AsBoolean, AsFloat, AsInteger. Наиболее часто используются свойства Text (cтрока текста, выводимого в связанный с данным полем интерфейсный элемент) и FieldName (имя поля базы данных).

Fields Editor позволяет создать так называемый статический список полей таблицы, добавляемых к описанию класса формы. Когда впервые используются такие компоненты TDataSet, как компонент TTable или TQuery, список полей для них динамически генерируется в процессе выполнения приложения на основе имеющихся столбцов таблиц или результатов SQL-запроса. Fields Editor позволяет определить и затем модифицировать статический список компонентов Field на этапе проектирования приложения. При внесении колонок с использованием Fields Editor для каждого из полей, добавленных к TDataSet, возникают объекты TField, после чего можно увидеть эти поля в инспекторе объектов и использовать в приложениях их свойства, события и методы.

Использовать Fields Editor нужно следующим образом:

1. Разместить компонент TTable или TQuery на форме.

2. Установить свойство DatabaseName для TTable или TQuery.

3. Установить свойство TableName компонента TTable или свойство SQL компонента TQuery.

4. Выбрать компонент TDataSet на форме и нажать правую клавишу мыши, после чего появится контекстное меню.

5. Из контекстного меню выбрать Fields Еditor. Появится пустое окно с заголовком, совпадающим с именем компонента TTable.

6. Снова нажать правую клавишу мыши над пустым окном и из контекстного меню выб ать опцию Add Fields.Имена всех колонок таблицы или запроса появятся в диалоговой панели Add Fields.

7. Выбрать поля, которые нужно внести в список объектов, и нажать OK.

8. Если требуется создать вычисляемое поле на основе имеющихся полей, нажать правую клавишу мыши и из контекстного меню выбрать New Field для создания нового поля на основе существующего или для создания вычисляемого поля (в дальнейшем следует создать код обработчика события OnCalcFields компонента TTable, где и производятся необходимые вычисления).

9. Если необходимо удалить статическое поле из списка полей в наборе данных, нужно нажать правую клавишу мыши и из контекстного меню выбрать Delete.

После того, как в Fields Editor добавлены поля, они появятся в инспекторе объектов, а ссылки на них — в h-файле формы.

Если теперь применить операцию drag-and-drop к выделенным в Fields Editor полям, перенеся их на форму, то можно получить готовую форму с необходимым набором интерфейсных элементов (в нашем случае — DBEdit, позволяющий отображать и редактировать строковые, числовые, денежные и другие поля, чьи значения представимы в виде строки символов, и DBImage, позволяющий отображать графические поля и использовать Clipboard для их редактирования). Если к такой форме добавить компонент TDBNavigator (этот компонент реализует основные методы TTable и TQuery, связанные с редактированием данных) и связать его с имеющимся компонентом TDataSource, а затем скомпилировать проект, получим приложение для просмотра и редактирования данных в таблице.

При работе Fields Editor создаются объекты, соответствующие видимым в инспекторе объектов полям. Эти объекты являются потомками объектного типа TField. Таблица 1 описывает существующие классы таких объектов:

Таблица 1. Потомки TField

Текстовые данные фиксированной длины до 8192 символов.

Целые числа от -2,147,483,648 до 2,147,483,647. Предназначен для нумерации ст ок в наборе данных. Потомок TIntegerField.

Целые числа от -2,147,483,648 до 2,147,483,647.

Целые числа от -32768 до 32767.

Целые числа от 0 до 65535.

Действительные числа с абсолютной величиной от 1.2x10e-324 до 1.7x10e308 с точностью до 15-16 цифры.

Действительные числа с абсолютной величиной от 1.2x10e-324 до 1.7x10e308 с точностью до 15-16 цифры.

Значения true или false.

Значения даты и времени.

Произвольное поле данных без ограничений размера.

Произвольное поле данных без ограничений размера.

Произвольное поле данных до 65535 символов с фактической длиной, представленной в первых двух байтах.

Текст произвольной длины.

Графическое поле произвольной длины, например, битовый массив.

Компонент TDBGrid

Компонент TDBGrid обеспечивает табличный способ отображения на экране строк данных из компонентов TTable или TQuery. Приложение может использовать TDBGrid для отображения, вставки, уничтожения, редактирования данных БД. Обычно DBGrid используется в сочетании с DBNavigator, хотя можно использовать и другие интерфейсные элементы, включив в их обработчики событий методы First, Last, Next, Ptior, Insert, Delete, Edit, Append, Post, Cancel компонента TTable.

Внешний вид таблицы (например, надписи в заголовках столбцов) может быть изменен с помощью редактора свойств Columns Editor. Для вызова Columns Editor нужно либо выбрать соответствующую опцию в контекстном меню компонента DBGrid или щелкнуть мышью в колонке значений напротив свойства Columns в инспекторе объектов.

Вторым способом получения контроля над характеристиками DBGrid или другими компонентами является создание описанным выше способом статического набора компонентов TField. Имея компонент типа TField, созданный для каждого из полей в наборе данных, можно установить ширину, формат, маску, расположение, метку для отображения в DBGrid и другие характеристики.

Поля Float, Integer и Date обладают свойством DisplayMask. Это свойство можно использовать, чтобы форматировать данные в компоненте DBGrid или другом компоненте Data Controls. Например, экранный формат mm-dd-yy может использоваться для размещения полей типа дата.

Некоторые компоненты TField (например, TStringField) обладают свойством EditMask, которое можно установить, вводя данные в DBGrid и другие компоненты Data Controls. Для установки свойства EditMask нужно установить компонент Field в Object Inspector и выбрать свойство EditMask, после чего появится диалоговая панель Input Mask Editor,. Чтобы проверить маску редактирования, нужно ввести значение в поле Test Input.

Поставка приложений, созданных с помощью С++ Builder


Одной из важнейших проблем при разработке заказных программных продуктов является окончательная сборка проекта и поставка приложений. Эта проблема может быть решена различными способами в зависимости от условий поставки, числа установок, состава поставляемого продукта.

Поставка исполняемых файлов

При окончательной сборке исполняемого файла (то есть непосредственно перед созданием дистрибутива) следует убрать из исполняемого файла отладочную информацию. Для этого следует из менеджера проектов вызвать диалоговую панель Project Options и нажать кнопку Release.

Если в проекте используются модули и формы Delphi, следует отключить все опции в секции Debugging и включить опцию Optimization в секции Code Generation на странице Pascal.

В той же диалоговой панели следует выбрать пиктограмму приложения (страница Application). Eе можно создать с помощью входящего в комплект поставки С++ Builder графического редактора, который можно запустить, выбрав пункт меню Tools/image Editor. Помимо этого, следует указать название приложения (то есть строку, которая будет отображаться в панели задач Windows) и имя файла справки, в котором содержатся экраны контекстно-зависимой помощи.

Если ссылка на справочный файл присутствует в опциях проекта, можно связать экраны помощи с интерфейсными элементами приложения. Для этой цели следует установить значения свойства HelpContext интерфейсных элементов приложения равным номерам разделов соответствующих экранов помощи из секции [MAP] файла проекта справки. В этом случае после компиляции приложения нажатие на клавишу F1 будет выводить на экран окно справочной системы с разделом справки, описывающим интерфейсный элемент, имеющий фокус ввода.

Установка и настройка Borland Database Engine

Если приложение не использует базы данных, в большинстве случаев будет достаточно просто скопировать на компьютер пользователя исполняемый файл и другие входящие в комплект поставки файлы (например, файл справки, файл оглавления справки и др.).

Если приложение использует базы данных, следует, помимо приложения, установить на компьютер пользователя библиотеку Borland Database Engine. Установка этой библиотеки заключается в копировании файлов этой библиотеки на компьютер пользователя, внесении сведений о ней в реестр (раздел HKEY_LOCAL_MACHINE//SOFTWARE//Borland//Database Engine), установке пиктограммы для утилиты конфигурации BDE, а также настройке псевдонимов, необходимых для корректной работы данного приложения.

В процессе установки BDE могут возникнуть следующие проблемы. Во-первых, у пользователя на компьютере могут быть установлены другие приложения, использующие эту библиотеку. Если скопировать на такой компьютер файл конфигурации BDE поверх имеющегося, работоспособность этих приложений может быть нарушена из-за того, что исчезнут описания псевдонимов, используемых ими. Поэтому при добавлении своих псевдонимов лучше пользоваться опцией File/Merge утилиты конфигурации BDE или создать псевдонимы вручную.

Можно посмотреть на эту проблему с другой стороны. Как избежать потери работоспособности вашего приложения, если другой программист установит свой файл конфигурации BDE поверх установленного вами? Возможное решение этой проблемы — создавать псевдонимы динамически во время работы приложения или анализировать их существование при запуске и создавать их, если по каким-то причинам они исчезли. Многие разработчики хранят информацию о них в локальных ini-файлах вне IDAPI32.CFG.

Вторая проблема может быть связана с несовпадением версий BDE. Если с момента выхода используемой вами версии BDE прошло какое-то время (а на данный момент после C++ Builder появились такие продукты, как Delphi и IntraBuilder 1.5, содержащие более новую версию BDE, чем С++ Builder), есть риск заменить старой версией BDE более новую, если на компьютере пользователя установлены эти средства разработки или созданные с их помощью приложения, что может нарушить их работоспособность.

Чтобы избежать подобных неприятностей, можно воспользоваться одной недокументированной особенностью BDE. Дело в том, что время создания файлов этой библиотеки совпадает с номером версии BDE, чем и можно воспользоваться. Путь к файлам BDE следует искать в реестре Windows (ключ HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Database Engine, параметры CONFIGFILE01 и DLLPATH).

Обязательно следует убедиться, что эти каталоги и файлы действительно существуют. К сожалению, не все пользователи грамотно деинсталлируют приложения. Часто бывает, что ставший ненужным каталог просто стирается, при этом каталог с BDE может быть как удален, а может быть, и нет. При этом, скорее всего (исключения бывают очень редко) соответствующий ключ реестра сохранится, «сбивая с толку» инсталляционное приложение.

Отметим, что следует также установить на компьютер пользователя необходимые драйверы SQL Links для доступа к серверным СУБД, если они используются, а также клиентское программное обеспечение для работы с соответствующей серверной СУБД (например, SQL*Net для Oracle). Кроме того, пользователь должен обладать необходимыми привилегиями для доступа к используемым вашим приложением объектам базы данных — таблицам, хранимым процедурам и др. Если вы готовите и серверную часть приложения, следует предоставить администратору базы данных так называемый DDL-сценарий серверной части (DDL — Data Definition Language), представляющий собой сценарий создания объектов базы данных, написанный на SQL либо на его процедурном расширении, характерном для данного сервера баз данных. Подобный сценарий может быть создан вручную либо с помощью какого-либо CASE-средства типа ERwin компании Logic Works (CASE, что расшифровывается как Computer-Aided Software/System Engineering, представляет собой технологию проектирования БД, основанную на графическом описании сущностей, атрибутов и связей между ними).

Если ваше приложение использует ODBC, следует установить соответствующий ODBC-драйвер и, возможно, 32-разрядный ODBC-администратор — он в общем случае не обязан присутствовать на компьютере пользователя.

Установка дополнительных компонентов приложения

Если ваше приложение использует ActiveX-компоненты, следует установить в каталог Windows\System соответствующий файл *.OCX и внести в реестр соответствующие ветви (HKEY_CLASS_ROOT\CLSID\. ) для регистрации соответствующих OLE-серверов.

Если ваше приложение использует какие-либо продукты третьих фирм (например, Run-time-версии генераторов отчетов сторонних производителей, например, Crystal Reports), следует установить их на компьютер пользователя в соответствии с инструкциями по поставке, предоставленными компанией-производителем.

Еще одна проблема, характерная для русскоязычных приложений, может быть связана с отсутствием на компьютере пользователя используемых вашим приложением шрифтов либо отображением их аналогов, содержащих вместо русских букв диакритические символы европейских алфавитов. Как решить эту проблему?

Самый простой способ — не использовать экзотических шрифтов. Шрифты типа Arial, Courier и Times New Roman, как правило, есть на всех компьютерах. Если же такой уверенности нет, можно либо предложить пользователю выбирать шрифты для приложения при его запуске и сохранять настройки в файлах (это неудобно, так как при этом надписи могут не уместиться на кнопках, метки могут «наехать» друг на друга и т.д.), либо инсталлировать нужные шрифты вместе с приложением. В случае Windows 95 достаточно скопировать их в каталог Fonts. Можно также присвоить «своим» шрифтам уникальные нестандартные имена, чтобы случайно не заменить ими шрифты, используемые другими приложениями (заменив в англоязычной версии Windows шрифт Arial его русскоязычной версией, вы в некоторых случаях можете лишить вашего пользователя возможности писать в текстовых процессорах по-французски или по-немецки этим шрифтом).

Способы создания дистрибутивов

Прежде чем описать процесс создания дистрибутива, рассмотрим, что именно делает инсталляционное приложение.

Во-первых, оно, как следует из вышеизложенного, копирует файлы (*.exe, *.ocx, *.dll, *.hlp, шрифты, данные и др.) в соответствующие каталоги.

Во-вторых, оно может модифицировать реестр.

В- третьих, оно может модифицировать переменную окружения PATH.

В-четвертых, оно создает программную группу и пиктограммы, а также модифицирует меню Windows-95 или Windows NT.

В-пятых, согласно общепринятым стандартам, оно должно предоставлять пользователю возможность выбора параметров установки (каталог, выбор устанавливаемых частей приложения), чтения лицензионного соглашения и файла readme, содержащего последнюю информацию о продукте.

В-шестых, оно может при необходимости перезапустить Windows.

Как создать инсталляционное приложение? Существует несколько вариантов решения этой проблемы. Во-первых, его можно написать на C++ Builder или Delphi, используя функции Windows API для модификации реестра согласно алгоритму, изложенному выше. Во-вторых, такое приложение можно создать с использованием генераторов дистрибутивов (InstallShield, Wise и др.). Отметим, что использование этих средств обычно подразумевает написание специализированного скрипта на языке, напоминающем С (в случае InstalShield) или Basic (в случае Wise).

Однако самый простой способ создать инсталляционное приложение — использовать входящий в комплект поставки версий Borland C++ Builder версий Professional и Client/Server Suite упрощенный генератор дистрибутивов Install Shield Express, позволяющий предоставить пользователю возможность выбора варианта инсталляции, добавить деинсталлятор (точнее, файл с расширением *.isu, используемый утилитой установки и удаления программ Windows 95), установить BDE, добавить псевдонимы баз данных, редактировать диалоги инсталляционного приложения, создавать программные группы, создавать дистрибутивные дискеты.

Сразу же отметим недостатки дистрибутивов, созданных с помощью этого продукта. Во-первых, этот продукт предполагает, что устанавливаемая (то есть имеющаяся на компьютере, где создается дистрибутив) версия BDE — самая новая, что может привести к замене имеющейся на компьютере пользователя версии BDE на более раннюю. Во-вторых, некоторые диалоги инсталляционного приложения оказываются англоязычными.

Тем не менее, если перечисленные недостатки не очень важны или могут быть устранены в конкретном случае (например, путем выбора варианта инсталляции), использование данного средства может сэкономить довольно много времени при создании дистрибутива приложения.

Создание дистрибутивов с помощью InstallShield Express

При запуске Install Shield Express появляется окно с радиогруппой, предлагающее открыть существующий проект или создать новый.

При создании нового проекта следует ввести имя проекта и указать каталог, в котором расположены файлы приложения.

Флажок «Include custom setup type» следует выбрать, если вы планируете предоставить пользователю возможность выбора варианта инсталляции Custom Setup для самостоятельного выбора варианта инсталляции. После этого появится главный экран InstallShield, в котором перечислена последовательность шагов, которые следует выполнить для создания дистрибутива.

В разделе Set the Visual Design следует заполнить поля со сведениями о приложении: название приложения, как оно будет выглядеть в программной группе, имя исполняемого файла, каталог, в который следует установить приложение.

Отметим, что Install Shield содержит несколько переменных, идентифицирующих диски и каталоги компьютера пользователя, что позволяет не знать реальную систему каталогов и дисков этого компьютера:

  • — каталог для установки, указанный пользователем,
  • — каталог, в котором содержится Windows
  • — каталог Windows\System
  • — диск, на котором содержится Windows
  • — диск, на котором содержится каталог Windows\System

— каталог Program Files.

Щелкнув на закладке Main Window, можно установить заголовок инсталляционного приложения, цвет фона и логотип.

Щелкнув на закладке Features, можно обнаружить одну-единственную опцию — Automatic Uninstaller. Ее рекомендуется оставить выбранной.

Следующий раздел — Specify InstallShield Options for Borland C++ — предназначен для выбора компонентов, часто поставляемых с приложениями: BDE, SQL Links и др. Выбрав нужный компонент (в нашем случае BDE) и нажав кнопку Settings, получим последовательность из четырех диалоговых окон для выбора частей BDE, поставляемых с данным приложением, и создания псевдонимов.

При установке параметров псевдонимов можно выбрать тип псевдонима и местоположение данных. Остальные параметры псевдонима (в том числе и языковые драйверы) можно указать в текстовом редакторе в нижней части окна.

Щелкнув по закладке Advanced Options, можно ознакомиться со списком файлов дополнительных компонентов (в нашем случае BDE) и сведениями о них.

Следующий раздел — Specify Components and Files — предназначен для определения групп файлов, компонентов приложения и типов установки. Щелкнув на закладке Groups, можно создать группы файлов для создания из них компонентов дистрибутива. Можно также использовать Explorer и переносить из него нужные файлы методом drag-and-drop (для этого нужно нажать кнопку Launch Explorer). Не рекомендуется оставлять группы пустыми.

Щелкнув на закладке Components, можно определить компоненты дистрибутива (их сможет выбирать пользователь в случае выбора варианта инсталляции Custom, поэтому можно дать им русскоязычные названия) и указать, из каких групп файлов они состоят. Не следует оставлять компоненты, не содержащие групп.

Следующая закладка — Setup Types — предназначена для определения вариантов установки. Если щелкнуть на ней, может оказаться, что вариант инсталляции его один — Typical (например, вы забыли отметить флажок «Include custom setup type»). В этом случае следует выбрать раздел Select User Interface Components и, щелкнув на закладке Components, в списке Dialog Boxes отметить опции Setup Type и Custom Setup. После этого можно вернуться к закладке Setup Types и определить варианты инсталляции. Как правило, варианты Custom и Typical содержат все возможные компоненты, а вариант Compact — минимальный набор компонентов, пригодный для нормальной работы приложения.

В разделе Select User Interface Components можно выбрать диалоги, в которых пользователь вводит необходимую информацию во время инсталляции (например, сведения о себе и компании, серийный номер продукта), знакомится с лицензионным соглашением и файлам readme, указывает каталог для инсталляции, выбирает тип установки и т.д. Возможен также предварительный просмотр диалогов при нажатии кнопки Preview.

Следующий раздел — Make Registry Changes — позволяет создавать на компьютере пользователя новые ключи реестра (закладка Keys) и значения ключей (Values). Это может оказаться полезным, если вы используете в вашем приложении компоненты ActiveX или создаете OLE-сервер. Ключи и их значения можно копировать из редактора реестра, если он поддерживает такую опреацию.

Следующий раздел — Specify Folders and Icons — позволяет определить состав будущей программной группы, а также определить параметры командной строки (закладка Advanced).

Наконец, последний раздел — Run Disk Builder. После сохранения инсталляционного скрипта (с помощью нажатия на кнопку с изображением дискеты на панели инструментов главного окна InstallShield) и выбора типа носителей происходит создание на жестком диске образов дистрибутивных дискет. Выбрав затем раздел Create Distribution Media, можно записать на дискеты созданный дистрибутив.

Опцию Test Run можно использовать для проверки работы инсталляционного приложения. Однако не рекомендуется делать это на компьютере, где производится разработка приложений. Лучше провести тестовые испытания на компьютере, похожем на компьютеры ваших пользователей. Кроме того, рекомендуется создать на этом компьютере копию Windows, чтобы в случае некорректной работы инсталлятора можно было вернуть программное обеспечение в исходное состояние.

Запуск инсталляционной программы приводит к последовательному появлению выбранных в разделе Select User Interface Components диалогов.

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

Если при создании дистрибутива вы выбрали опцию Automatic Uninstaller, то в случае возникновения необходимости деинсталляции установленного приложения следует использовать утилиту «Установка и удаление программ» в панели управления Windows.

Таким образом, хотя InstallShield Express и не решает полностью всех проблем, возникающих при поставке приложений, с его помощью во многих случаях возможно быстрое создание дистрибутивов, удовлетворяющих современным требованиям к функциональности и дизайну инсталляционных приложений.

В заключение отметим, что поставка приложений, созданных с помощью Delphi, осуществляется практически точно так же, как и поставка приложений, созданных с помощью C++ Builder.

Список использованной литературы

1. Джарод Холингвэрт, Дэн Баттерфилд, Боб Сворт, Джэйми Оллсоп C++Builder 5. Руководство разработчика.

2. Borland C++ Builder 5. Энциклопедия программиста. Калверт Ч., Рейсдорф К., «ДиаСофт» — 2001, 944 стр.

Работа с ресурсами в Borland C++ Builder

Материалы к лекциям .

Ресурсы, которые может использовать приложение

Любая программа в Windows это не только код, но еще и набор данных типа картинок, строк, значков, диалоговых окон и так далее. Все это хранится внутри .exe модуля программы в виде ресурсов. То есть, ресурсы в Windows можно рассматривать как вид данных, которые уже инициализированы.

Ресурсы не загружаются в память вместе со всей программой, а находятся на диске до тех пор, пока их не вызовет программа. Это позволяет не плодить на диске лишние микрофайлы и экономить оперативную память при выполнении приложения.

Ресурсы возможно помещать в отдельные DLL библиотеки. Например если в DLL хранятся диалоговые окна, меню, строковые сообщения и т.п., то при необходимости их изменения не понадобится изменять сами программы.

Ресурсы можно разделить на два типа: двоичные и текстовые. Двоичные ресурсы это обычно растровые картинки, иконки, курсоры. а текстовые ресурсы это строки, шаблоны диалоговых окон и т.п.

Ресурсы в проектах приложений Borland C++ Builder хранятся раздельно. Файл проекта с расширением .DFM содержит информацию о ресурсах окон и компонентов для конструирования самой формы приложением. Он создается автоматически при создании проекта и изменяется при добавлении компонентов на форму. Другой файл с расширением .res (Project1.res) — файл графических ресурсов — хранит курсоры, иконки и рисунки.

Для редактирования графических ресурсов Borland C++ Builder предусмотрен редактор Image Editor. Он позволяет редактировать битовые изображения (.bmp), пиктограммы (.ico), курсоры (.cur), а также сами файлы ресурсов (.res и .dcr).

Файлы ресурсов .rc также могут быть подключены к проекту Borland C++ Builder. При компиляции проекта информация из файлов .rc и информация на которую они ссылаются будет помещена в файл с расширением .res, а ресурсы из этого файла перенесены в .exe файл и становятся доступны приложению.

Каждый тип ресурсов имеет свой идентификатор. Полный список ресурсов можно посмотреть в файле winuser.h .

Некоторые типы ресурсов:

RT_ACCELERATOR — таблица ускорителей;

RT_ANICURSOR — анимированный курсор;

RT_ANIICON — анимированная икона;

RT_BITMAP — растровая картинка;

RT_DIALOG — диалоговое окно;

RT_FONTDIR — набор шрифтов:

RT_HTML — HTML документ;

RT_MESSAGETABLE — таблица сообщений;

RT_RCDATA — данные определенные приложением (RAW);

RT_STRING — таблица строк:

RT_VERSION — ресурс версия;

RT_HTML -Документ HTML.

Таким образом — ресурсы это составная часть файлов .exe и .dll. Практически, при создании приложения, файлы ресурсов только переписываются в двоичном виде в .exe(.dll) файлы. Составляющие ресурсы извлекаются и используются по мере выполнения программы.

Для просмотра используемых приложением ресурсов можно использовать функцию WIN32 API EnumResourceTypes().

Поместим на форму один компонент TButton и определяем внешнюю функцию f_EnumFunc(), которая будет функцией перечисления:

В обработчике события нажатия кнопки TButton пишем код:

Цифры выдаваемые программой говорят о номерах ресурсов, которые использовал программист при ее написании.

.exe файл в ресурсах и его выполнение

Поставим целью спрятать в ресурсах создаваемого приложения некоторую другую программу, а в процессе выполнения приложения вызвать ее из ресурсов.

Поместим на форме компонент TMemo и два компонента TButton. В обработчике Button1Click напишем код:

Откомпилируем приложение, при нажатии кнопки Button1 в директории программы бедет содан файл со строчкой (которая отобразится в компоненте Memo):

Это строка «Имя ресурса | Тип ресурса | Имя программы» — полностью идентифицирует ресурс, а именно — программу calc.exe, которую можно будет спрятать в ресурсах приложения.

Далее, присоеденяем к проекту этот файл (Меню: Project/Add To Project.. выбираем a.rc файл).

Если сейчас попробовать откомпилировать проект, то компилятор выдаст ошибку. Причина — путь к calc.exe должен быть указан полный и, хотя ресурс еще не используется, но уже формируется. Поэтому скопируем calc.exe из директории Windows в директорию приложения (в противном случае необходимо указать полный путь).. Приложение компилирутся и можно начинать использовать ресурс. Удаляем файл «calc.exe» из директории проекта.

В обработчике Button2Click напишем код:

Здесь осуществляется выбор ресурса в поток — файла calc.exe (из файл «a.res», который уже создан). TResourceStream — потоковый класс, который обеспечивает доступ к компилируемым ресурсам в приложения. Он имеет множество методов для доступа к ресурсам, в том числе и для сохранения потока.

При нажатии на вторую кнопку калькулятор вызывается даже если его удалить не только из текущей директории приложения, но и из директории Windows.


Это не единственный способ вызова и запуска на выполнения .exe файла из ресурсов, но наиболее простой. Другие способы извлечения ресурсов и работы с потоками будут рассмотрены ниже — там где это или целесообразно, или другим способом задача не выполнима. При желании гурманы могут поэкспериментировать с TMemoryStream, WinExecute() и.т.п.

Текстовая информация в ресурсах

Помещение и извлечение текстовой информации, скопированной в ресурс из файла, и получение доступа к ней мало отличается от примера, описанного выше.

Создадим аналогичный проект с одним компонентом TMemo и двумя компонентами TButton. Шаги создания кода приложения будут аналогичны пройденным в предыдущем примере. Приведем лишь коды обработчиков событий нажатия кнопок.

Здесь одно отличие — тип ресурса вместо EXEFILE стал RT_RCDATA. После включения в проект файла «a.rc», не забудем поместить в дирректорию проекта любой файл readme.txt.

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

В результате при нажатии кнопки 2 файл «readme.txt» появляется в дирректории приложения (сколько его не удадяй) и отображается в компоненте Memo.

Картинки в ресурсах

Картинки можно поместить в ресурс как используя файл ресурсов проекта (project1.res) так и отдельный файл ресурсов, аналогично описанному выше хранению текста и программ.

Для рассмотрения первой возможности создадим новый проект и поместим на форму компонент TImage и два компонента TButton. В директорию проекта поместим любой рисунок в формате bmp (например «a.bmp») и откроем его в любом графическом редакторе, например в Microsoft Paint. Не компилируя проект запустим Image Editor (меню Tools/Image Editor). Далее откроем project1.res из директории проекта(File/Open, Projects/project1.res). Выполняем правый клик в поле открывшегося окна и в контекстном меню выбираем пункт New/Bitmap.

И сразу видим недостаток этого метода — максимальное число цветов для изображения — 256. Устанавливаем число цветов и размер (его определяем в Paint — меню Рисунок/Атрибуты). В файле у Contens появилась новая ветвь Bitmap с именем рисунка Bitmap1. (Можно воспользовавшись контекстным меню пунктом «Rename» и переименовать рисунок, например в MYBITMAP, но для наглядности делать этого не будем). Выполним двойной клик на имени рисунка — откроется окно редактора с пустым рисунком. Перенесем рисунок из Paint (ctrl+A, Ctrl+C) (можно и нарисовать свой рисунок в Image Editor) в окно Image Editor(ctrl+V). Закроем окно редактора рисунка и Image Editor, естественно на вопрос: «Save Changes. » кликнем «Yes».

Создадим обработчик нажатия для кнопки 2 и запишем несколько вариантов кода,позволяющего отображать и сохранять рисунок:

Откомпилируем и загрузим приложение, при нажатии кнопки 2 изображение появится в компоненте TImage.

Для рассмотрения использования отдельного файла ресурса в проект внесем некоторые изменения.

В обработчиках событий ButtonClick запишем коды, приведенные ниже. После компиляции и запуска приложения нажимаем первую кнопку и закрываем приложение. Добавляем к проекту файл «a.rc». Вновь компилируем и запускаем приложение и нажимаем вторую кнопку — картинка отображается в компоненте Image.

Пример полностью аналогичен предыдущему примеру, за исключением того, что для формирования файла .rc использован класс TStringList, а тип ресурса стал «RT_BITMAP».

Отображение рисунка возможно выполнить и немного по другому:

Редактирование картинок из ресурсов и отображение отредактированных картинок.

Следующие примеры показывают как можно извлекать ресурс картинки и внести в него коррективы. Зная структуру файла картинки, например, таким образом можно сделать надписи на картинках или наложить на рисунок из ресурса другой рисунок и т.п.

Тоже можно выполнить и чуть чуть по другому и с картинки из файла project1.res.

Иконки в ресурсах

Хранение иконок в ресурсах ничем не отличается от хранения рисунков.

Аналогично сначала используем иконку, поместив ее в ресурс через projekt1.res, а затем с использованием файла a.res.

Создадим новый проект на которой для данного примера достаточно поместить всего лишь два компонента Button. Не компилируя проект откроем projeсt1.res в Image Editor. Там уже есть веточка Icon с именем иконки MAINICON. Воспользовавшись контекстным меню пункт New/Icon, создаем новую иконку и переименуем ее в MAINICON1. Двойным кликом на имене иконки откроем графический редактор и нарисуем любой рисунок. Помним, что цвет левого нижнего пикселя является цветом прозрачности. Закроем редактор сохранив изменения в файле projeсt1.res.

Создадим обработчик нажатия для кнопки 2 и запишем следующий код:

Запускаем приложение. При нажатии кнопки 2 иконка меняется не только на форме окна приложения, но и в панели задач.

Следующий код показывает как можно получить информацию об иконке и как создается новая иконка, на основании структуры HICON. Кроме того здесь также показано как скопировать иконку в буфер обмена.

Структура ICONINFO общая для иконок и курсоров.

Для рассмотрения использования отдельного файла ресурса для работы с иконками в проект внесем некоторые изменения. В обработчиках событий ButtonClick запишем коды, приведенные ниже. После компиляции и запуска приложения нажимаем первую кнопку и закрываем приложение. Добавляем к проекту файл «a.rc». Вновь компилируем и запускаем приложение и нажимаем вторую кнопку — иконка меняется на нарисованную ранее (сохранена на предыдущем шаге) и в форме окна приложения, и в панели задач.

Курсоры в ресурсах

Использование ресурсов для манипуляций с курсорами во многом аналогично работе с иконками, но здесь есть и существенное отличие, речь о котором пойдет ниже.

Также как и ранее сначала создадим курсор в project1.res, а затем в файле a.res. Создадим новый проект на которой для данного примера поместим шесть компонент Button. Не компилируя проект откроем projeсt1.res в Image Editor. Так же как создавали иконку в предыдущем примере создадим курсор с именем MAINCURSOR и нарисуем его (любой рисунок, например черную стрелку). Закроем редактор сохранив изменения в файле projeсt1.res.

В секции private файла Unit1.h определим функцию vLoadCursor(). Эта функция необходима только для того, чтобы не повторять один и тотже код.

Тело функции опишем в файле «UNIT1.cpp» следующим образом:

Этот код показывает, что если удалось получить хэндл курсора, то его можно и подключить через массив Cursors свойств Screen. Об этом уже говорилось в разделе «Курсоры».

Создадим обработчик нажатия для кнопки 2 и запишем следующий код:

Откомпилируем и запустим приложение — нарисованный курсор появляется при нажатии на кнопку 2.

Для кнопки 3 создадим другой способ загрузки курсора.

Курсор загружается как и при нажатии на кнопку 2. О функции LoadImage() речь также уже шла.

Перейдем к использованию отдельного .res файла.

Для кнопки 1 напишем уже знакомый (новый только идентификатор ресурса RT_CURSOR) код:

Выполним этот код и в директории проекта будет создан файл «a.rc», содержащий строку:

На данном этапе отличия от предыдущего примера нет.

Скопируем в директорию проекта файл «Hand-i.cur» из директории «C:\Windows\Cursors\» и добавим к проекту файл «a.rc» (Project/Add to Project), а в обработчиках Button4Click напишем код:

При запуске приложения все работает, курсор формы сменился со стрелки на руку. Но как загрузить курсор не сохраняя его в файле на диске. До этого и иконки и картинки можно было загрузить и использовать прямо из потока. Для курсоров такой возможности нет.

Остается один выход — либо хранить курсоры только в Файле ресурсов приложения, либо пойти по достаточно сложному пути, который описан в обработчике события нажатия кноки пять (Button5Click).

Таким образом эта проблема решена. Но она к сожалению не одна, и хотя это может быть и не надо, все же попробуем сохранить курсор из Файла ресурсов приложения на диске, тоесть сохранить курсор MAINCURSOR.

Причина возникшей трудности в самом файле ресурсов приложения. Если откроем «project1.res» и «a.res» в редакторе ресурсов Image Editor, то увидим суть различия в достуре к курсорам.

Строки символов в ресурсах

По аналогии с предыдущими примерами поместим на форме компонент Memo и два компонента Button. В обработчиках ButtonClick напишем код:

Выполнив ту же последовательность действий как и в предыдущих примерах получим в компоненте Memo при нажатии кнопки два строку:

HTML документы в ресурсах

Помещение HTML документов (файлов .html, .htm . ) в ресурсы полностью аналогично с примером помещения в ресурсы и использования .exe файлов. Поэтому здесь приводятся лишь коды приложения, форма которого имеет компонент TMemo и два компонента TButton, и которое выводит в браузере документ «a.html», а текст кода документа в компоненте Memo.

.wav и другие музыкальные файлы в ресурсах

По аналогии с предыдущими примерами оформим создание файла a.rc для формирования a.res в приложении, поместив на форме компонент TButton. Откомпилируем и выполним приложение, предварительно поместив в директорию приложения любой музыкальный файл, например a.wav.

Заметим, что идентификатора ресурса SOUND нет в списке идентификаторов ресурсов. Это говорит о том, что в файл ресурсов можно помещать и произвольную информацию — вопрос лишь в том, как ее потом оттуда извлечь и использовать.

Добавим на форму еще один компонент TButton и запишем код:

Содержимое файла, помещенное в ресурс, воспроизводится дважды (для обеспечения этой возможности добавлен флаг SND_SYNC). Однако, если повторить все тоже, но заменив тип ресурса «SOUND», например на «SOUND1», эти функции откажутся воспроизводить ресурс. Таким образом, хотя «SOUND» не определен как тип ресурса в файле winuser.h как некоторая константа (например MAKEINTRESOURCE(x) — где x некоторое число), функции считают, что в исполняемом файле находится ресурс именно с типом «SOUND».

И всетаки, хотя в этом и нет необходимлсти, для приведенных ниже кодов ресурс может иметь любой идентификатор отличный от «SOUND». Здесь используются уже знакомые по предыдущим параграфам потоки, которые позволяют найти практически произвольный ресурс и извлечь его из исполняемого модуля как двоичный код.

Используем TMemoryStream и функции поиска и фиксации ресурса.

Аналогично .wav файлам можно манипулировать и с любыми другими музыкальными файлами.

Полная коллекция программ от Borland [2007, Программирование]

Год выпуска: 2007
Жанр: Программирование
Разработчик: Borland Software Corporation
Сайт разработчика: http://www.borland.com/
Язык интерфейса: Русский
Платформа: Windows, Linux
Системные требования: Процессор: Pentium 233 МГц и выше Память: 64 Мбайт (рекомендуется 128 Мбайт) Видеокарта: 16 бит, 800×600
Описание:

В этом сборнике от Borland Software Corporation вы найдете весь необходимый набор софта для программирования, управления пакетами, оптимизации кода, некоторые программы для linux, документацию и обзоры.

InterBase считается одной из лучших сред для администрирования сетевых баз данных. Является очень удобным инструментом для построения баз данных с поддержкой SQL. В официальных документах InterBase зачастую именуется как IB Database

Borland Turbo Assembler 5.0

Очень популярный в нашей стране ассемблер. Наилучший выбор для программистов под DOS, но не совсем удачный под Windows

Borland C# Builder 1.0 Enterprise Edition

C# Builder, является неотъемлемым компонентом решений Borland для средств управления циклом жизни приложений, помогает повысить производительность команды разработчиков .NET-приложений при помощи design-driven средств разработки. C#Builder предоставляет поддержку прямого взаимодействия между платформами .NET , J2EE™ и инфраструктурой CORBA®, а следовательно простоту интеграции .NET-приложений с существующим программным обеспечением, уменьшая тем самым стоимость работ. Также, работая с C#Builder , вы сможете получить возможность высокопроизводительной native-поддержки для быстрого, легкого и более гибкого проектирования большинства баз данных уровня предприятия
Работает на следующих OC:
-Microsoft Windows 2000 (SP2 или более новый)
-Microsoft Windows XP Professional
-Microsoft Windows Server 2003

Borland C++ Builder Enterprise 6.0 for Windows NT2000XP + Update

Borland C++Builder — является инструментом, который действительно реализовал RAD-стиль разработки приложений применительно к самым различным классам задач, включая работу с Internet, ActiveX, с проектами уровня предприятия, и все это — с использованием стандартного C++. Borland C++Builder тесно интегрирован с обеими базовыми технологиями создания распределенных систем — CORBA и COM. Borland C++Builder совместим с Visual C++. Поддерживает большинство технологий современной разработки
Borland C++ BuilderX 1.0 Enterprise for Windows NT2000XP
C++BuilderX — это новый шаг в технологиях создания C++ приложений, обеспечивающий удобную и естественную среду разработки, встроенную поддержку различных C и C++-компиляторов и отладчиков. Это позволяет создавать приложения в интегрированной среде, значительно повышая тем самым эффективность разработок. C++BuilderX создана специально для решения комплексных IT задач больших предприятий, в этой среде вам будут доступны высокопроизводительные драйверы для распространенных корпоративных баз данных, средства настройки для повышения производительности ваших приложений, а также интеграция с CORBA® — все это поможет вам быстрее создавать профессиональные, конкурентоспособные корпоративные системы.

Borland C++ Compiler 5.5

Быстрый и надежный компилятор от Borland. Для работы вам понадобится среда разработки IDE например Visul Studia или Borland C++ BuilderX.
Borland Together Edition for C Plus Plus BuilderX for Windows 2000/XP
Использование интегрированной среды быстрой разработки приложений Borland Together Edition for C++ BuilderX поможет вам оперативно создавать высококачественные приложения с использованием многоплатформенной среды разработки C++ Builder. Обеспечивая проектирование и анализ взаимосвязей за счет применения UML-моделей.

Популярнейший (в прошлом) компилятор языка C/C++.Популярность приобрел благодаря удобной среде разработки и общенациональной любви к Borland. В данной версии компилятора написано множество библиотек и приложений. До сих пор используется во многих образовательных учреждениях (не требователен к ресурсам и прост в обучение). Приложения создаются только для DOS

Borland Pascal 7.0

Самый известный в нашей стране (да и, наверное, в мире) компилятор Pascal. Несмотря на то, что был создан еще в 80 годах прошлого столетия, до сих пор употребляется в большинстве институтах и школах, где обучают программирование на языке Pascal.

Borland® Delphi™ 8 for the Microsoft® .NET Framework, Architect Edition

Это ваша эволюция в ответ на революцию среды .NET. Вы уже сегодня легко сможете начать разработку программного обеспечения для платформы Microsoft .NET Framework с помощью языка Delphi в среде разработке RAD, а включающей в себя VCL Forms, Windows® Forms, ASP.NET, Web Forms, Web Services, ADO.NET и многое другое. Разработчики смогут реализовать весь свой опыт работы на Delphi, используя фрагменты разработанных ранее исходных кодов и начать создание Windows-приложений для .NET прямо сейчас. Delphi 8 содержит Borland® Enterprise Core Objects (ECO™) для дизайн-ориентированной разработки ПО и Borland® Optimizeit™ Profiler for the Microsoft .NET Framework, который поможет вам своевременно обнаружить и исправить места исходного кода, негативно влияющие на производительность приложения. Delphi 8 — это полностью .NET и полностью Delphi.

Borland Delphi 7.0 Enterprise

С помощью этого продукта вы сможете разработать не только приложения, которые пойдут на любой 32-х битной Windows и если понадобится, перенесутся на Linux, но и будут работать, используя технологию NET.Версия Enterprise прекрасно подходит для разработки Web приложений и прекрасно поддерживает все современные технологии, включая UML, COM и многие другие. Delphi 7 наконец-то стал поддерживать темы Windows XP, и вы будете точно уверены, что ваше приложение выглядит также, как ожидает его увидеть пользователь

Borland Enterprise Server 5.21 for Windows NT2000XP

Унифицированная, высокоэффективная программная среда для развертывания и управления широким кругом приложений электронного бизнеса и Web-сервисов. Предоставляет решение для J2EE, идеальное для малого и среднего бизнеса.Borland Enterprise Server — один из самых надежных и масштабируемых серверов приложений J2EE, полностью поддерживающий последние индустриальные стандарты: J2EE, EJB, JMS, Servlet, JSP, XML и SOAP. В основе сервера лежит Borland VisiBroker, самое используемое в мире CORBA-решение. Плотная интеграция с Borland Jbuilder, инструментом Java-разработки №1 в мире, обеспечивает эффективные и бесшовные разработку и развертывание для приложений масштаба предприятия.

Borland JBuilder 9 Enterprise for WinNT2kXP

Ведущая кросс-платформенная среда для разработки распределенных бизнес-приложений на Java. Мощные визуальные конструкторы позволяют упростить процесс разработки компонентов и существенно ускорить процесс развертывания на серверах приложений, в первую очередь на Sybase EAServer, с которым JBuilder теперь полностью интегрирован. Пакет обеспечивает средства для работы с базами данных, системами контроля версий исходных текстов и визуального моделирования, предоставляет возможность тестирования и документирования кода.

Borland JBuilder X Enterprise 10.0 for Windows 2000/XP

Это ведущая среда разработки для построения Java™ приложений уровня предприятия.JBuilder Enterprise резко увеличивает производительность разработчика с помощью поддержки многих платформ и серверов приложений, ускоряет и облегчает построение EJB, Web client, XML, Web Services, mobile, а также приложений баз данных с помощью two-way визуальных дизайнеров.

Borland JDataStore 6.07

Высокопроизводительная универсальная Java-база данных, предназначенная для создания встроенных БД, Web-баз данных, и баз данных мобильных устройств. JdataStore отвечает стандартам Java и SQL92, она занимает небольшой объем, практически не требует администрирования, и в то же время предлагает вам производительность, масштабируемость и надежность мощных баз данных. JdataStore полностью интегрирована со средой разработки приложений Borland JBuilder™, поддерживает различные Java- и native IDE и приложения, что значительно повышает оперативность разработок.

Borland Optimizeit ServerTrace 1.1 Developer Edition for Windows NT2000XP

Предназначен для повышения производительности в приложений для платформы J2EE. Этот продукт пополнил набор решений для повышения производительности Borland OptimizeIt, охватывающий все этапы создания приложений: от разработки до тестирования и опытной эксплуатации. OptimizeIt ServerTrace позволяет группам тестирования получать детальную информацию о том, на что расходуются ресурсы и время системы. Определив, каким из компонентов следует уделить внимание, тестировщики могут оперативно выявить проблемы с производительностью в конкретных строках исходного текста программ. Кроме того, OptimizeIt ServerTrace имеет уникальную функцию Automatic Application Quality Analyzer, способную оперативно выявлять скрытые проблемы с производительностью.

Borland Optimizeit Suite 6.0

Borland Optimizeit Suite бесспорно является ведущим продуктом, предназначенным для решения задач, связанных с производительностью Java-приложений.Optimizeit™ Suite делает управление производительностью Java™ приложений легче, чем когда-либо. Полная интеграция со средой разработки приложений Borland JBuilder повышает продуктивность команды, значительно увеличивает производительность программ и помогает создавать быстрые, масштабируемые и надежные приложения; совместим с популярными серверами приложений и IDE, он поддерживает работу с платформами IBM AIX, HP-UX, Windows, Linux, Solaris и Mac OS X .

Borland CaliberRM Client Server Enterprise 6.5

Borland® CaliberRM,™ средство управления деятельностью предприятия, с его помощью можно обеспечить сотрудничество рассредоточенных команд менеджеров и разработчиков. CaliberRM обеспечит вас эффективной поддержкой для хорошо налаженного взаимодействия внутри команды и предоставит возможность контроля над обеспечением необходимых условий для работы больших и малых проектов.

Borland CaliberRM Datamart Enterprise 6.5

Необходимыми составляющими успешного выполнения работ по оптимизированию операций и разработке программного обеспечения, являются быстрота и продуктивность. Предоставляя CaliberRM™ Datamart, Borland дает менеджерам проектов инструменты для ясного понимания функционирования процесса. CaliberRM Datamart позволяет менеджерам оценивать эффективность — с точки зрения повышения уровня оптимизации на всех необходимых уровнях организации. Благодаря открытой архитектуре, CaliberRM Datamart может быть легко расширен, чтобы использоваться совместно с любой технологией, связанной с выполнением процесса.

Borland CaliberRM Web Client Enterprise 6.5

Клиент для доступа с CaliberRM через web интерфейс.

Borland Deployment Op-Center 6.0 for Windows 2000/XP

Borland Deployment Op-Center создан специально для помощи при работе с разнородными распределенными приложениями и управлении ими. Он позволяет осуществлять контроль и дает комплексное представление о работе сетевых сервисов и поддерживающей их инфраструктуре, помогает облегчить работы по моделированию и конфигурации компонентов системы и их взаимосвязи. Если в процессе работы произойдет сбой, вы сможете с помощью Deployment Op-Center изолировать место неполадки и автоматически переустановить сервисы, максимально уменьшив тем самым затраты на работы такого типа. Установка Op-Center поможет вам при управлении широким кругом J2EE™-приложений, основанных на технологии WWW; CORBA®-сервисами, компонентами, процессами и хостами; его открытая, наращиваемая архитектура позволит легко объединить этот продукт с существующими системами управления событиями.

BORLAND STARTEAM Server 5.3

StarTeam Server обеспечивает унифицированное хранение для всех разработок.

BORLAND STARTEAM CLIENT 5.3

Программа клиент для доступка к файлам StarTeamServer

BORLAND STARTEAM CROSSPLATFORM CLIENT 5.3

Межплатформенный клиент для доступка к файлам StarTeamServer

BORLAND STARTEAM MPX SERVER 5.3

Вспомогательная программа для сервера, которая увеличивает расширяемость StarTeam через многоканальную передачу данных по протоколу TCP/IP.Этот метод уменьшает загрузку StarTeam Server, когда у клиента стоит опция постоянного обновления.


BORLAND STARTEAM StarDisk 5.3

Позволяет пользователю иметь доступ к любому типу файла, загруженного в StarTeam поверх TCP/IP сетей, например: Internet, через виртуальный диск в Windows Explorer.

BORLAND STARTEAM WORKFLOW DESIGNER 5.3

Программа для проектирования на базе StarTeam
STARTEAM SDK

Borland JBuilder 9.0 Enterprise Edition LINUX

Ведущая кросс-платформенная среда для разработки распределенных бизнес-приложений на Java. Мощные визуальные конструкторы позволяют упростить процесс разработки компонентов и существенно ускорить процесс развертывания на серверах приложений, в первую очередь на Sybase EAServer, с которым JBuilder теперь полностью интегрирован. Пакет обеспечивает средства для работы с базами данных, системами контроля версий исходных текстов и визуального моделирования, предоставляет возможность тестирования и документирования кода.

Borland JDataStore 6.07 Linux

Высокопроизводительная универсальная Java-база данных, предназначенная для создания встроенных БД, Web-баз данных и баз данных мобильных устройств. JdataStore отвечает стандартам Java и SQL92, она занимает небольшой объем, практически не требует администрирования, и в то же время, предлагает вам производительность, масштабируемость и надежность мощных баз данных. JdataStore полностью интегрирована со средой разработки приложений Borland JBuilder™, поддерживает различные Java- и native IDE и приложения, что значительно повышает оперативность разработок.

BORLAND KYLIX 3 ENTERPRISE LINUX

Borland Kylix 3 добавляет новые функциональные возможности для программного инструментария под Linux, включая расширенную поддержку Web-сервисов и соответствие Web-стандартам.Выпуск нового продукта означает, что около 2 млн. разработчиков С++ во всем мире смогут создавать С++-приложения в проверенной коммерческой среде разработчика, на самом распространенном среди Linux-программистов языке. С помощью Kylix 3 разработчики под Linux смогут создавать не только GUI-программы и приложения баз данных, но также приложения для Web-сервисов. При этом, по словам вице-президента компании Саймона Торнхилла (Simon Thornhill), программисты получат визуальные средства разработки и среду разработчика на С++ под Linux, которых не было долгое время.Kylix 3 может быть интегрирован с Borland C++ Builder или Delphi для создания кросс-платформенных приложений Linux/Windows с единым кодом. Библиотека компонентов CLX (Component Library for Cross-platform development) позволяет ускорить разработку сложных приложений и упростить миграцию Windows-приложений на платформу LinuxBorland Optimizeit Suite Enterprise Edition 5.0 Linux
Borland® Optimizeit™ Suite 5 позволяет легко управлять оптимизацией Java™. Полная интеграция с the Borland JBuilder™ повышает производительность разработчиков и позволяет создавать быстрые и масштабируемые приложения. Optimizeit Suite — это, бесспорно, первое имя в области оптимизации Java. Продолжая свои передовые традиции, Optimizeit Suite предлагает другие инновации: Automatic Memory Leak Detector (AMLD), который позволяет разработчикам, которые впервые знакомятся с Java, быстро находить утечки памяти.

Optimizeit Suite инетгрирован с популярными серверами приложений и IDEs. Поддерживаются платформы: IBM® AIX,® HP-UX,® Windows,® Solaris,™ Linux,® и Mac® OS X platforms.

Сборка очень маленьких программ в borland c builder

Представляю Вам свои эксклюзивные портативные (англоязычные) сборки Borland C++ Builder 6 Enterprise.

+Не надо устанавливать (что полезно для новичков)

+Сборка Full позволяет не заморачиваться с установкой компонентов (что тоже порой очень облегчает жизнь)

+Сборки отвязаны от железа (можно использовать на разных компьютерах)

-Работают чуть медлене обычной версии

-Чем больше установлено в сборке компонентов, тем медленее работают

P.S. Думаю у кого современный компьютер проблем со скоростью работы сборок не будет.

P.S.2 Качаем и пишем отзывы по скорости работы, по багам и прочему.

Всё запаковано 7z архиватором. (Можно скачать здесь: http://7-zip.org.ua/ru/download.html)

Сборки Borland C++ Builder 6 Enterprise:

1. Borland C++ Builder 6 Enterprise Standart — портативная версия BCB6 с обычным набором компонентов

(в виде одного файла).

2. Borland C++ Builder 6 Enterprise Full — портативная версия BCB6 которая включает в себя:

-AlphaControls 7.34 — компоненты добавляющие отличное оформление к программам

-RXLib 2.75 — различные компоненты которые любят олдфаги =) (тут мне нравиться компонент поддерживаеющий GIF)

-TMS Controls 5.4.2 — огромное количество компонентов, перечислить всё несмогу (можно замутить подсветку синтаксиса)

-ImageEn 3 — работа с изображениями

-ZeosDBO — работа с базами данных MSQL,MYSQL .

-InstrumentLab 4.5 — компоненты эмитирующие приборы

-ZipForge 5.06 — создание архивов

Описание для тех кто незнает

Совместимость: Windows XP

Основные особенности:
• Интеграция B2B-приложений с помощью web-служб.
• Быстрая разработка web-приложений.
• Создание высокопроизводительного ПО промежуточного уровня для web-служб.
• Полная поддержка стандартных протоколов SOAP, XML, WSDL и XSL.
• Высокопроизводительный 32-битный компилятор.
• Поддержка баз данных IBM DB2, IBM Informix, Oracle, Sybase, MySQL, dBASE, Paradox и Borland InterBase.

C++Builder 6 Enterprise расширяет возможности среды разработки приложений на C++ средствами для работы с web-службами. Кросс-платформенная библиотека компонентов Borland CLX позволяет создавать универсальные решения. С помощью новых продуктов Borland C++, которые появятся в ближайшее время, эти решения можно будет переносить на платформу Linux. Новый менеджер проектов с открытой архитектурой и средства сборки обеспечивают полный контроль над их разработкой и развертыванием.
Разработка кросс-платформенных приложений для Windows и Linux.

Просмотров : 33065 | Добавил : demenev | Рейтинг : 0.0 / 0

Всего комментариев : 17

Обращаюсь лично к Деменёву
Александру.

Cпасибо за сборку.

Подскажите ,пожалуйста, для сборки «BorlandC++Builder6Standart.7z» для Project1 ( самосгенеренный Борландом проект)

в каком каталогеискать EXE-файл?? Или он не генерится?

Ошибку: «[Linker Fatal Error] Fatal: Expected a file name:»удалось убрать путем настроекв опциях проекта:
закладкаpackages: убрать галочкуBuild with runtimes packages
закладка linker: убрать галочку Use dinamyc RTL

А Где найтиEXE-файл??

В скрытых каталогах? C:\Program Files\Borland\.

Средство визуальной разработки на языке C++ фирмы Borland C++ Builder

Теперь разберемся с последним компонентом — индикатором процесса CGauge, который мы пока не задействовали в нашем приложении. Для наглядности работы данного компонента в обработчик события —SpeedButton2Click, добавим следующее:

void __fastcall TForm1::SpeedButton2Click(TObject *Sender)

for(char g=0;g CGauge1->Progress=g;

Sleep(25); // Делаем задержку

Вот теперь, наше приложение уже не смотря на незначительные изменения и дополнения, можно считать действующим приложением, в котором задействованы все компоненты внесенными раньше в проект. Думаю, что для начала, теперь Вам понятен принцип написания программ в среде быстрой визуальной разработки фирмы Borland — C++Builder.

В дальнейшем, будем рассматривать более сложные приемы и особенности написания программ работающих на персональных компьютерах, на которых установлена операционная система фирмы Microsoft — семейства Windows (98, Me, Xp, Vista). К сожалению, всех функций и особенностей работы операционной системы Windows, сама фирма Microsoft не предоставляет, что иногда вызывает трудности написания драйверов разрабатываемых устройств и программ сторонними разработчиками, которые по разным причинам не могут получить исчерпывающую информацию. Ясно только одно, заплати и пользуйся, но и помалкивай. Ну это не страшно. Есть доступная часть информации по функциям WinAPI, различные сообщества программистов, форумы, книги и так далее, которые в конечном счете дадут для Вас ответы на многие вопросы.

Самое главное — это нужно понять, что для того, чтобы программа работала в среде Windows, нужно просто принять правила игры предоставляемой самой фирмой Microsoft или использовать программные средства предоставляемые сторонними производителями микросхем и программ. А наша задача постараться разобраться и использовать это для своих целей.

Следующим шагом для дальнейшей разработки разрабатываемого приложения, является прием использующим многими программистами, позволяющий блокировать работу приложения или запускать его снова, если оно уже было ранее запущено. Один из способов такой блокировки нужно добавить в разрабатываемое приложение и представлен ниже:

Добавляем в приложение подпрограмму:

// Для чтобы программа не запускалась второй раз .

BOOL WeAreAlone(LPSTR szName)

Затем на форме приложения (Form1) нужно два раза щелкнуть левой кнопкой мышки для добавления в приложения обработчика события создания формы, где дополнительно размешаем условия проверки запуска нашего приложения:

void __fastcall TForm1::FormCreate(TObject *Sender)

// проверкa запускалась раньше наша программа

ShowMessage(» Данная программа уже запушена!»);

Компилируем наше приложение, и все — теперь при попытке повторно запустить данное приложение второй раз, будет выведено предупреждение, что такое приложение уже запущено.

Следующим этапом будет Предварительная подготовка аппаратной части устройства для правильного подключения его к персональному компьютеру. Дело в том, что микросхема контролера USB фирмы FTDI — FT245BM, входящая в состав проекта USB 1.1 (mode Full-speed, 12 Мбит/с), по умолчанию в операционной системе Windows XP при подключении настроена на использование более простого из предлагаемых производителем для использования так называемый — VCP-драйвер, который позволяет работать на очень маленьких скоростях передачи данных до 1Мбит/с. Нам же интересны более высокие скорости и в дальнейшем будем использовать D2xx-драйверы фирмы FTDI, которые являются альтернативой VCP-драйверам. Данные драйвера включают в себя драйвер WDM, который позволяет осуществлять связь с устройством через специальный Windows USB Stack, а также доступную библиотеку DLL, которая будет связывать прикладное программное обеспечение написанное на Borland C++ Builder с WDM драйвером.

При этом использование D2XX-драйверов позволяет получить максимальные заявленные скорости обмена данными до 10 -11 Мбит/с (теоретически должно быть до 12 Мбит/c) при параллельном интерфейсе обмена с использованием ПЛИС, в то время как с микропроцессорной системой, скорости намного ниже — до 7-8 Мбит/c.

Микросхема FT245BM в нашем случае, всегда будет иметь в паре внешнюю микросхему памяти типа EEPROM — 93C46, которая хранит многие служебные параметры настройки контроллера FT245BM и другую вспомогательную информацию. Учитывая, что память в начале всегда обнулена (все ячейки памяти — 0xFF), то рекомендую для начала работы, использовать программу — FTXPRCVR.exe предназначенная для прошивки EEPROM, чтобы установить правильные значения идентификаторов: V >

Запускаем программу FTXPRCVR.exe, входящую в состав дистрибутива D2XX-драйверов для Windows XP предоставляемая самим производителем:

Подключаем наше устройство через кабель USB к персональному компьютеру. Вне зависимости от того, что будет делать операционная система Windows XP, просто нажимаем на кнопку — OK.

Если подключенное устройство исправно и обнаружено программа делает свое дело, в результате которого выведет в статусной строке следующее:

Этого мы и добивались, далее завершаем работу программы нажатием на кнопку — Exit. Отключаем устройство от компьютера. Снова подключаем устройство к персональному компьютеру.

Для проверки результата действия программы FTXPRCVR.exe и внесения своих параметров работы микросхемы FT245BM, запускаем очень удобную программу — EditEEPROM.exe, которая позволяет вносить изменения в EEPROM. Данную программу можно скачать бесплатно по адресу: ftp://ftp.efo.ru/pub/ftdichip/Utils/EditEEPROM.zip

Выбираем меню: Файл->Открыть порт->D2XX Recovery PID for XP:

Настраиваем и выбираем нужные параметры расположенные справа:

При этом старайтесь не менять параметры и описание устройства, так как драйвер работает только с такими параметрами. В окне содержимого User Area, можно вносить любую служебную информацию.

Теперь, нужно сначала стереть старую информацию записанную в EEPROM, для этого выбираем пункт меню: EEPROM->Стереть. Появится окно с предупреждением:

Отвечаем утвердительно, нажатием на кнопку — Да. После выполнения данного действия программа выдаст результат:

Выбираем пункт меню: EEPROM->Записать, в результате чего получим сообщение:

Аналогично, тоже самое если требуется или по желанию изменяются и сохраняются параметры области User Area, тем более ничего сложного здесь нет.

Сборка очень маленьких программ в borland c builder

БлогNot. Builder 6 на Windows 7 :)

Builder 6 на Windows 7 :)

Если Вас интересует новый Builder XE от Embarcadero, Вы зашли не по адресу! В статье рассказывается об установке под Windows 7 последней версии классического C++ Builder от Borland. Про Builder XE от Embarcadero — тут.

Визуальные среды от Microsoft в последние годы немного «подтянулись», так, абсолютно безумная MFC, требующая, по сути, постоянной прямой работы с Windows API, сменилась чуть более адекватной (но ещё более тормозной) Windows Forms (при этом учтите, что работая с Windows Forms, Вы пишете не на нормальном C++, а на так называемом C++ CLI).

Однако, какому-нибудь Visual C++ 2010 по удобству, скорости и понятности для начинающих (а также при необходимости быстро разработать прикладное приложение с Windows-интерфейсом) всё ещё далеко до. например, старого доброго Borland C++ Builder 6 от 2002 года.

Довольно и того, что даже при статической компоновке библиотек, приложение, написанное на новом Visual Studio, тупо не запустится на другом компьютере без наличия в системе библиотек Visual C++ Redistributable Package, которых во многих сборках Windows нет и не предвидится. слинкованная даже в названном старом Билдере EXE’шка при этом отлично запустится и на «семёрке».

Увы, Borland проиграл недобросовестную со стороны «мелкомягких» конкуренцию, и улучшений не предвидится. Всё, что можно сделать — заставить старые среды работать в новых системах, обойдя, при необходимости, искусственно придуманные Microsoft ограничения :)

Возьмём, для примера, тот же упомянутый Borland C++ Builder 6 и заставим его работать под Windows 7.

Развернув архив в любую папку, запустим файл Install/Setup.exe , права, конечно, «Администратор» :)

Подходящие Serial Number и Autorization key получим с помощью вот этой волшебной программки:

Программа — не вирус, некоторые антивирусы могут «ругаться» на неё просто за то, что она меняет исполняемый файл. Развернуть архив, запустить, нажать Generate (возможно, это понадобится сделать несколько раз, в полученных ключах не должно быть знака вопроса, например:

— годно). Если это нужно, добавьте программку к исключениям для антивируса.

Обратите внимание, что при потере фокуса окном ввода серийника курсор всегда становится на первое поле ввода, копируем части номера внимательно!

Дальше по шагам мастера установки C++ Builder действуем так:

  • Выбираем Typical установку (уже выбрана),
  • принимаем лицензионное соглашение,
  • пропускаем ещё один шаг (Next),
  • выключаем Use Visibroker.
  • офис оставляем 2000,
  • если хотим, оставляем галочку .cpp — С++ Builder source file (тогда файла типа .cpp будут открываться в Билдере),
  • убираем галочку Install Interbase Client,
  • еще раз соглашаемся с лицензией,
  • проверяем пути установки,
  • еще раз Next,
  • убираем Save installation database to hard drive,
  • наконец, жмём Install.

После установки перезагружаемся.

При первом запуске выбираем «активацию по телефону или браузеру», первые 2 кода и третий, который выдаст регистратор (Registration code) копируем в соответствующие поля ввода программки, nli-bcb6kg, ничего не жмём, сразу получаем Activation key, переносим его в Builder.

Осталась маленькая проблемка из тех, что Мелкософт создаёт пользователям — в Windows 7 они отказались от поддержки формата справки .HLP в пользу формата .CHM (Compiled HTML), так что при попытке открыть из «Билдера» помощь, Вы рискуете увидеть следующее:

Справка для этой программы была создана в формате справки Windows, который зависит от компонента, не входящего в данную версию Windows. Для просмотра справки, созданной в формате справки Windows, можно загрузить специальную программу.

При этом, файл WinHlp32.exe, который должен открывать файлы .hlp, в системе есть — точней, подленькая заглушка вместо оригинального файла из XP. Можно, кстати, скопировать аналогичный файл из XP, а можно поступить ещё проще — скачать и установить дополнение KB917607. Вот оно в версии для сборок x86:

Для x64 можно найти в Сети аналогичное.

Теперь Builder работает, собрал и запустил нужное приложение за 5 минут. Ну и на других компах оно заработало без идиотских предложений скачать какие-то библиотеки.

P.S. Если при запуске ругается вроде » unable to rename bcb.$$$ to bcb.dro » — попробуйте запустить программу с правами администратора (правая кнопка мыши на ярлычке Builder, выбрать соответствующую команду меню). Также сохраняйте проект перед тем, как его первый раз компилировать (меню File, Save all, создайте новую папку для проекта там, где есть права, сохраните файл проекта и программный модуль в этой папке). Ещё рецепты — в этой теме.

P.P.S. Если этот вариант вам не подходит, есть ещё более простая Portable-сборка.

Развернуть архив на нужный диск, например, d:\ (не создавая новой папки), запустить C++Builder 6.exe , нажать ОК на появившемся окне от ZipForge. Всё. В «семёрке» проверено и работает. Папка для проектов — \Builder6\Projects .

29.11.2013, 17:40; рейтинг: 83227

Сборка очень маленьких программ в borland c builder

Взгляд на C# Builder от Borland

Среда C# Builder от компании Borland — изобретателя интегрированной среды разработки (IDE) — не оправдала возложенных на нее надежд. Причем как самих разработчиков, так и пользователей-программистов. Это, наверное, одно из самых больших и тяжелых разочарований для Borland. Теперь стало ясно, что в острой ценовой конкуренции, тяжелой рыночной борьбе за разработчиков с Visual Studio .NET 2003 от софтверного гиганта из Редмонда C# Builder, скорее всего, проиграет с большим отставанием.

В общем-то, с фундаментальной задачей создания кода программа справляется. Не так хорошо, как VS.NET, но достаточно терпимо. К тому же, есть несколько небольших нововведений, которые можно считать облегчающими жизнь программиста. Однако, и меня, почему-то, это совсем не удивляет, использована любимая «Борландом» технология создания новых программных продуктов — на технологической платформе компилятора Microsoft создана своя оболочка. И, как будто Редмонд приплатил «Борланду», вы не сможете подключить Mono (Mono — альтернативный компилятор C# с открытым исходным кодом).

И, хотя C# Builder может тесно интегрироваться с другими ведущими продуктами «Борланд» — скажем, с технологией Together’s UML и системой управления требованиями Caliber, производственного толка и пользы от этой интеграции будет мало. Но, опять же, есть и положительный момент. C# Builder может запросто работать с Janewa (программное обеспечение, которое позволяет NET-приложениям взаимодействовать с серверными компонентами J2EE и CORBA), а также превосходно работает с СУБД сторонних производителей: Oracle, DB2 и СУБД от «Борланд» InterBase.
Компания «Борланд» имеет долгую и славную историю, которая начинается с Turbo Pascal. А в следующем месяце она отпразднует 20-летие создания IDE — среды интегрированной разработки. Ее продукты всегда конкурировали с ведущими программами на рынке, и, более того, зачастую «Борланд» оказывалась первой. Пакет J Builder является самой популярной полноценной средой разработки для языка Java, что подтверждает высокие стандарты компании. Поэтому к C# Builder также предъявляются самые строгие требования. И никто не ожидает от компании «Борланд» чего-то обыкновенного, просто все ждут от нее новое, еще выше поднимающее планку качества программ и удобства работы.
Для того чтобы узнать, плох или хорош C# Builder, его нужно получить. Для этого существуют две возможности. Первая — скачать с сайта компании пробную версию. Вторая — заказать коробочную версию программы. Вот о ней и поговорим.
Итак, версия Enterprise предлагается нам на двух дисках. Она является второй по количеству включенных в нее дополнительных программ и утилит. Именно эта версия, на мой взгляд, более всего подошла бы корпоративному разработчику. Впрочем, версия Architect не сильно отличается от Enterprise — всего лишь возможностью создавать и работать с несколькими UML-схемами одновременно. В поставку также может быть включен и третий CD, содержащий сторонние программы и утилиты. В коробочной версии вам также достанутся СУБД: Microsoft SQL Server — Developer Edition, IBM DB2 и Borland InterBase 7. Там же можно найти пакеты Crystal Reports, Install Shield, Studio One Enterprise. На СУБД стоит заострить внимание, так как «Борланд» заявляет, что ее драйверы для ADO.NET работают быстрее, чем аналогичные от Microsoft. Это, правда, не относится к драйверам для Microsoft SQL Server.


Среда разработки еще не шагает по планете в полном смысле этого слова, однако уже известно несколько интересных особенностей ее работы. Например, если при инсталляции не устанавливать драйвер для СУБД Oracle, то при загрузке каждый раз среда будет выдавать два сообщения об ошибке, хотя загрузка программы будет идти дальше надлежащим образом. Вообще, процедура установки выглядит крайне сырой. Мало того, что процесс установки занимает около двух часов, так еще очень часто в тривиальных случаях мастер непонятно зависает, а мастер регистрации вообще обрадовал меня тем, что, как оказалось, у меня нет в регистрационной записи «Борланд» функции Retrieve Password.
Отдельно хочется рассказать и о справочной системе. Было приятно, что в справку включен раздел Tutorial, но в общем содержание справки выглядит блекло. Так что наличие Tutorial’а — единственная отдушина. Все тексты крайне плохо редактированы и слишком склоняются к Java. Например, часть Урока 17 об исключениях утверждает: «Обработка исключений в C#, очень похожа на их обработку в Java. Однако, язык C# тут больше похож на C++, давая возможность программисту игнорировать значительно больше возникающих исключений (исключение, которое возникло, но не было обработано, приведет к аварийному завершению программы и появлению диалогового окна)». Даже если не обращать внимания на ошибки пунктуации, данное утверждение вводит программиста в заблуждение. Правильнее было бы сказать, что в C# все исключения действуют как ошибки времени исполнения в Java.

Дальше — больше. В редакторе кода нет ничего, что могло бы удостоиться особенного внимания. Закладки и подсветка кода уже давно считаются само самой разумеющимися. Автоматическая подстановка кода есть, но работает она так, что в сравнении с тем же VB .NET напоминает маленького неуклюжего медвежонка. Справочная система навевает тоску, когда пытаешься прочитать разделы справки по слову «macros» для поиска возможности запрограммировать пользовательские макросы, а вместо этого сидишь и читаешь раздел MFC Message Maps из раздела Visual C++ Concepts. Нет, я, конечно, понимаю, что знать основы С++ полезно для молодого растущего организма, но чтобы так… В общем, индексный файл справки не похож сам на себя.
В бочку дегтя добавим ложку меда. Одной из них является диалог New Project в C# Builder, который включает в себя широкий спектр опций по созданию приложений на Visual Basic .NET. И хотя некоторые визуальные изыски с этими проектами не работают, в среде можно редактировать, компилировать, отлаживать и запускать проекты на VB .NET. Так что, если Borland удастся украсть у Microsoft кого-то из разработчиков на Visual Basic .NET, я буду очень впечатлен этим фактом.

Если требуется отойти от VB .NET — скажем, разработчик хочет создать приложение на основе C# WinForms, — то и тут его ждет разочарование. За все это время компания ничего нового не придумала — IDE все та же. Процесс создания интерфейса программы особых изменений не претерпел. Если не считать, конечно, что при работе с Data Provider BdpConnec-tion у меня пару раз выскочило сообщение об ошибке из-за того, что драйвер для Oracle не был установлен. Все стандартные компоненты WinForms в IDE присутствовали, как и компоненты сторонних разработчиков — например, Component One. А вот работала IDE ужасно. Даже на очень хороших и быстрых компьютерах (512 Mb RAM и GeForce4Ti200) окно редактора мигало при печати кода. Да, не нам учить «Борланд», что редактор кода — кровь и плоть IDE. Она и сама знает, как все испортить.
C# Builder может интегрироваться с некоторыми другими программами — например, с CaliberRM — своеобразной системой управления требованиями, — но в поставке с C# она идет только как приложение-клиент и может подключаться к уже существующим базам Caliber, а версии Lite нет. Поэтому создать свою базу и работать с ней в небольших проектах, для чего она, собственно, и создавалась, у вас не получится.
«Борланд», несомненно, имеет очень большой опыт создания по-настоящему полномасштабных, удобных в работе, простых в освоении и богатых функционально сред разработки (достаточно посмотреть на J Builder), и становится действительно непонятно, почему многие из полезных функций не были встроены в C# Builder. Поддержка рефакторинга отсутствует как таковая, хотя в J Builder’е можно было использовать nAnt и nUnit — два популярных проекта с открытым исходным кодом для управления сборкой проектов и тестирования их модулей. CVS-систему также невозможно привязать к среде разработки. Стоит ли еще говорить, что не только не инсталлируется компилятор Mono, но и вообще не существует возможности отказаться от компилятора по умолчанию — отключить в среде компилятор Microsoft невозможно.

C# Builder на данный момент является единственной произведенной не Microsoft полнофункциональной средой разработки приложений для платформы .NET. На беспощадном и жестоком рынке .NET можно выжить лишь в том случае, если представленный продукт стабилен, удобен и функционален — впрочем, об этом уже говорилось. В прошлом «Борланд» доказала, что может идти вровень с Microsoft, а то и обогнать ее. И я думаю, что еще наступит день, когда это случится снова, и «Борланд» представит свои разработки, которые поспорят на равных с Visual Studio .NET. На данный же момент остается только недоумевать, каким образом она смогла выпустить столь странный продукт, и как такое случилось.
Пока же я знаю, что C# Builder скоро просто умрет как программный продукт. Как среда разработки, если судить по отношению к нему компании-разработчика, он умер еще до рождения.

Работа с ресурсами в Borland C++ Builder

Материалы к лекциям .

Ресурсы, которые может использовать приложение

Любая программа в Windows это не только код, но еще и набор данных типа картинок, строк, значков, диалоговых окон и так далее. Все это хранится внутри .exe модуля программы в виде ресурсов. То есть, ресурсы в Windows можно рассматривать как вид данных, которые уже инициализированы.

Ресурсы не загружаются в память вместе со всей программой, а находятся на диске до тех пор, пока их не вызовет программа. Это позволяет не плодить на диске лишние микрофайлы и экономить оперативную память при выполнении приложения.

Ресурсы возможно помещать в отдельные DLL библиотеки. Например если в DLL хранятся диалоговые окна, меню, строковые сообщения и т.п., то при необходимости их изменения не понадобится изменять сами программы.

Ресурсы можно разделить на два типа: двоичные и текстовые. Двоичные ресурсы это обычно растровые картинки, иконки, курсоры. а текстовые ресурсы это строки, шаблоны диалоговых окон и т.п.

Ресурсы в проектах приложений Borland C++ Builder хранятся раздельно. Файл проекта с расширением .DFM содержит информацию о ресурсах окон и компонентов для конструирования самой формы приложением. Он создается автоматически при создании проекта и изменяется при добавлении компонентов на форму. Другой файл с расширением .res (Project1.res) — файл графических ресурсов — хранит курсоры, иконки и рисунки.

Для редактирования графических ресурсов Borland C++ Builder предусмотрен редактор Image Editor. Он позволяет редактировать битовые изображения (.bmp), пиктограммы (.ico), курсоры (.cur), а также сами файлы ресурсов (.res и .dcr).

Файлы ресурсов .rc также могут быть подключены к проекту Borland C++ Builder. При компиляции проекта информация из файлов .rc и информация на которую они ссылаются будет помещена в файл с расширением .res, а ресурсы из этого файла перенесены в .exe файл и становятся доступны приложению.

Каждый тип ресурсов имеет свой идентификатор. Полный список ресурсов можно посмотреть в файле winuser.h .

Некоторые типы ресурсов:

RT_ACCELERATOR — таблица ускорителей;

RT_ANICURSOR — анимированный курсор;

RT_ANIICON — анимированная икона;

RT_BITMAP — растровая картинка;

RT_DIALOG — диалоговое окно;

RT_FONTDIR — набор шрифтов:

RT_HTML — HTML документ;

RT_MESSAGETABLE — таблица сообщений;

RT_RCDATA — данные определенные приложением (RAW);

RT_STRING — таблица строк:

RT_VERSION — ресурс версия;

RT_HTML -Документ HTML.

Таким образом — ресурсы это составная часть файлов .exe и .dll. Практически, при создании приложения, файлы ресурсов только переписываются в двоичном виде в .exe(.dll) файлы. Составляющие ресурсы извлекаются и используются по мере выполнения программы.

Для просмотра используемых приложением ресурсов можно использовать функцию WIN32 API EnumResourceTypes().

Поместим на форму один компонент TButton и определяем внешнюю функцию f_EnumFunc(), которая будет функцией перечисления:

В обработчике события нажатия кнопки TButton пишем код:

Цифры выдаваемые программой говорят о номерах ресурсов, которые использовал программист при ее написании.

.exe файл в ресурсах и его выполнение

Поставим целью спрятать в ресурсах создаваемого приложения некоторую другую программу, а в процессе выполнения приложения вызвать ее из ресурсов.

Поместим на форме компонент TMemo и два компонента TButton. В обработчике Button1Click напишем код:

Откомпилируем приложение, при нажатии кнопки Button1 в директории программы бедет содан файл со строчкой (которая отобразится в компоненте Memo):

Это строка «Имя ресурса | Тип ресурса | Имя программы» — полностью идентифицирует ресурс, а именно — программу calc.exe, которую можно будет спрятать в ресурсах приложения.

Далее, присоеденяем к проекту этот файл (Меню: Project/Add To Project.. выбираем a.rc файл).

Если сейчас попробовать откомпилировать проект, то компилятор выдаст ошибку. Причина — путь к calc.exe должен быть указан полный и, хотя ресурс еще не используется, но уже формируется. Поэтому скопируем calc.exe из директории Windows в директорию приложения (в противном случае необходимо указать полный путь).. Приложение компилирутся и можно начинать использовать ресурс. Удаляем файл «calc.exe» из директории проекта.

В обработчике Button2Click напишем код:

Здесь осуществляется выбор ресурса в поток — файла calc.exe (из файл «a.res», который уже создан). TResourceStream — потоковый класс, который обеспечивает доступ к компилируемым ресурсам в приложения. Он имеет множество методов для доступа к ресурсам, в том числе и для сохранения потока.

При нажатии на вторую кнопку калькулятор вызывается даже если его удалить не только из текущей директории приложения, но и из директории Windows.

Это не единственный способ вызова и запуска на выполнения .exe файла из ресурсов, но наиболее простой. Другие способы извлечения ресурсов и работы с потоками будут рассмотрены ниже — там где это или целесообразно, или другим способом задача не выполнима. При желании гурманы могут поэкспериментировать с TMemoryStream, WinExecute() и.т.п.

Текстовая информация в ресурсах

Помещение и извлечение текстовой информации, скопированной в ресурс из файла, и получение доступа к ней мало отличается от примера, описанного выше.

Создадим аналогичный проект с одним компонентом TMemo и двумя компонентами TButton. Шаги создания кода приложения будут аналогичны пройденным в предыдущем примере. Приведем лишь коды обработчиков событий нажатия кнопок.

Здесь одно отличие — тип ресурса вместо EXEFILE стал RT_RCDATA. После включения в проект файла «a.rc», не забудем поместить в дирректорию проекта любой файл readme.txt.

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

В результате при нажатии кнопки 2 файл «readme.txt» появляется в дирректории приложения (сколько его не удадяй) и отображается в компоненте Memo.

Картинки в ресурсах

Картинки можно поместить в ресурс как используя файл ресурсов проекта (project1.res) так и отдельный файл ресурсов, аналогично описанному выше хранению текста и программ.

Для рассмотрения первой возможности создадим новый проект и поместим на форму компонент TImage и два компонента TButton. В директорию проекта поместим любой рисунок в формате bmp (например «a.bmp») и откроем его в любом графическом редакторе, например в Microsoft Paint. Не компилируя проект запустим Image Editor (меню Tools/Image Editor). Далее откроем project1.res из директории проекта(File/Open, Projects/project1.res). Выполняем правый клик в поле открывшегося окна и в контекстном меню выбираем пункт New/Bitmap.

И сразу видим недостаток этого метода — максимальное число цветов для изображения — 256. Устанавливаем число цветов и размер (его определяем в Paint — меню Рисунок/Атрибуты). В файле у Contens появилась новая ветвь Bitmap с именем рисунка Bitmap1. (Можно воспользовавшись контекстным меню пунктом «Rename» и переименовать рисунок, например в MYBITMAP, но для наглядности делать этого не будем). Выполним двойной клик на имени рисунка — откроется окно редактора с пустым рисунком. Перенесем рисунок из Paint (ctrl+A, Ctrl+C) (можно и нарисовать свой рисунок в Image Editor) в окно Image Editor(ctrl+V). Закроем окно редактора рисунка и Image Editor, естественно на вопрос: «Save Changes. » кликнем «Yes».

Создадим обработчик нажатия для кнопки 2 и запишем несколько вариантов кода,позволяющего отображать и сохранять рисунок:

Откомпилируем и загрузим приложение, при нажатии кнопки 2 изображение появится в компоненте TImage.

Для рассмотрения использования отдельного файла ресурса в проект внесем некоторые изменения.

В обработчиках событий ButtonClick запишем коды, приведенные ниже. После компиляции и запуска приложения нажимаем первую кнопку и закрываем приложение. Добавляем к проекту файл «a.rc». Вновь компилируем и запускаем приложение и нажимаем вторую кнопку — картинка отображается в компоненте Image.

Пример полностью аналогичен предыдущему примеру, за исключением того, что для формирования файла .rc использован класс TStringList, а тип ресурса стал «RT_BITMAP».

Отображение рисунка возможно выполнить и немного по другому:

Редактирование картинок из ресурсов и отображение отредактированных картинок.

Следующие примеры показывают как можно извлекать ресурс картинки и внести в него коррективы. Зная структуру файла картинки, например, таким образом можно сделать надписи на картинках или наложить на рисунок из ресурса другой рисунок и т.п.

Тоже можно выполнить и чуть чуть по другому и с картинки из файла project1.res.

Иконки в ресурсах

Хранение иконок в ресурсах ничем не отличается от хранения рисунков.

Аналогично сначала используем иконку, поместив ее в ресурс через projekt1.res, а затем с использованием файла a.res.

Создадим новый проект на которой для данного примера достаточно поместить всего лишь два компонента Button. Не компилируя проект откроем projeсt1.res в Image Editor. Там уже есть веточка Icon с именем иконки MAINICON. Воспользовавшись контекстным меню пункт New/Icon, создаем новую иконку и переименуем ее в MAINICON1. Двойным кликом на имене иконки откроем графический редактор и нарисуем любой рисунок. Помним, что цвет левого нижнего пикселя является цветом прозрачности. Закроем редактор сохранив изменения в файле projeсt1.res.

Создадим обработчик нажатия для кнопки 2 и запишем следующий код:

Запускаем приложение. При нажатии кнопки 2 иконка меняется не только на форме окна приложения, но и в панели задач.

Следующий код показывает как можно получить информацию об иконке и как создается новая иконка, на основании структуры HICON. Кроме того здесь также показано как скопировать иконку в буфер обмена.

Структура ICONINFO общая для иконок и курсоров.

Для рассмотрения использования отдельного файла ресурса для работы с иконками в проект внесем некоторые изменения. В обработчиках событий ButtonClick запишем коды, приведенные ниже. После компиляции и запуска приложения нажимаем первую кнопку и закрываем приложение. Добавляем к проекту файл «a.rc». Вновь компилируем и запускаем приложение и нажимаем вторую кнопку — иконка меняется на нарисованную ранее (сохранена на предыдущем шаге) и в форме окна приложения, и в панели задач.

Курсоры в ресурсах

Использование ресурсов для манипуляций с курсорами во многом аналогично работе с иконками, но здесь есть и существенное отличие, речь о котором пойдет ниже.

Также как и ранее сначала создадим курсор в project1.res, а затем в файле a.res. Создадим новый проект на которой для данного примера поместим шесть компонент Button. Не компилируя проект откроем projeсt1.res в Image Editor. Так же как создавали иконку в предыдущем примере создадим курсор с именем MAINCURSOR и нарисуем его (любой рисунок, например черную стрелку). Закроем редактор сохранив изменения в файле projeсt1.res.

В секции private файла Unit1.h определим функцию vLoadCursor(). Эта функция необходима только для того, чтобы не повторять один и тотже код.

Тело функции опишем в файле «UNIT1.cpp» следующим образом:

Этот код показывает, что если удалось получить хэндл курсора, то его можно и подключить через массив Cursors свойств Screen. Об этом уже говорилось в разделе «Курсоры».

Создадим обработчик нажатия для кнопки 2 и запишем следующий код:

Откомпилируем и запустим приложение — нарисованный курсор появляется при нажатии на кнопку 2.

Для кнопки 3 создадим другой способ загрузки курсора.

Курсор загружается как и при нажатии на кнопку 2. О функции LoadImage() речь также уже шла.

Перейдем к использованию отдельного .res файла.

Для кнопки 1 напишем уже знакомый (новый только идентификатор ресурса RT_CURSOR) код:

Выполним этот код и в директории проекта будет создан файл «a.rc», содержащий строку:

На данном этапе отличия от предыдущего примера нет.

Скопируем в директорию проекта файл «Hand-i.cur» из директории «C:\Windows\Cursors\» и добавим к проекту файл «a.rc» (Project/Add to Project), а в обработчиках Button4Click напишем код:

При запуске приложения все работает, курсор формы сменился со стрелки на руку. Но как загрузить курсор не сохраняя его в файле на диске. До этого и иконки и картинки можно было загрузить и использовать прямо из потока. Для курсоров такой возможности нет.

Остается один выход — либо хранить курсоры только в Файле ресурсов приложения, либо пойти по достаточно сложному пути, который описан в обработчике события нажатия кноки пять (Button5Click).

Таким образом эта проблема решена. Но она к сожалению не одна, и хотя это может быть и не надо, все же попробуем сохранить курсор из Файла ресурсов приложения на диске, тоесть сохранить курсор MAINCURSOR.

Причина возникшей трудности в самом файле ресурсов приложения. Если откроем «project1.res» и «a.res» в редакторе ресурсов Image Editor, то увидим суть различия в достуре к курсорам.

Строки символов в ресурсах

По аналогии с предыдущими примерами поместим на форме компонент Memo и два компонента Button. В обработчиках ButtonClick напишем код:

Выполнив ту же последовательность действий как и в предыдущих примерах получим в компоненте Memo при нажатии кнопки два строку:

HTML документы в ресурсах

Помещение HTML документов (файлов .html, .htm . ) в ресурсы полностью аналогично с примером помещения в ресурсы и использования .exe файлов. Поэтому здесь приводятся лишь коды приложения, форма которого имеет компонент TMemo и два компонента TButton, и которое выводит в браузере документ «a.html», а текст кода документа в компоненте Memo.

.wav и другие музыкальные файлы в ресурсах

По аналогии с предыдущими примерами оформим создание файла a.rc для формирования a.res в приложении, поместив на форме компонент TButton. Откомпилируем и выполним приложение, предварительно поместив в директорию приложения любой музыкальный файл, например a.wav.

Заметим, что идентификатора ресурса SOUND нет в списке идентификаторов ресурсов. Это говорит о том, что в файл ресурсов можно помещать и произвольную информацию — вопрос лишь в том, как ее потом оттуда извлечь и использовать.

Добавим на форму еще один компонент TButton и запишем код:

Содержимое файла, помещенное в ресурс, воспроизводится дважды (для обеспечения этой возможности добавлен флаг SND_SYNC). Однако, если повторить все тоже, но заменив тип ресурса «SOUND», например на «SOUND1», эти функции откажутся воспроизводить ресурс. Таким образом, хотя «SOUND» не определен как тип ресурса в файле winuser.h как некоторая константа (например MAKEINTRESOURCE(x) — где x некоторое число), функции считают, что в исполняемом файле находится ресурс именно с типом «SOUND».

И всетаки, хотя в этом и нет необходимлсти, для приведенных ниже кодов ресурс может иметь любой идентификатор отличный от «SOUND». Здесь используются уже знакомые по предыдущим параграфам потоки, которые позволяют найти практически произвольный ресурс и извлечь его из исполняемого модуля как двоичный код.

Используем TMemoryStream и функции поиска и фиксации ресурса.

Аналогично .wav файлам можно манипулировать и с любыми другими музыкальными файлами.

Илон Маск рекомендует:  Что такое код getcolor
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL