Разное

Справочник c builder 6: C++ Builder 6: справочное пособие. — NoNaMe

Справочник по С++ × C++ Builder программирование

  • Главная
  • Directory

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

Директивы

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

В языки программирования С++ и C++ Builder встроена поддержка препроцессора. Строки в исходном коде, которые должны быть обработаны препроцессором в виде #define и #include называются препроцессорными директивами.

Библиотеки

Библиотека (от англ. library) — сборник подпрограмм или объектов, используемых для разработки программного обеспечения (ПО).

Язык C++ включает в себя те же библиотеки, что и Си, организованы они также. Каждый элемент библиотек определен в стандартном пространстве имен. Тем не менее, для совместимости с языком Cи, традиционный формат записи имен заголовочных файлов «имя файла.h» (например, stdlib.h) также предоставляется с теми же определениями в рамках глобального пространства имен.

Функции

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

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

Операции

Операция — конструкция в языках программирования, аналогичная по записи математическим операциям, то есть специальный способ записи некоторых действий. Наиболее часто применяются арифметические, логические и строковые операции. В отличие от функций, операции часто являются базовыми элементами языка и обозначаются различными символами пунктуации, а не алфавитно-цифровыми. Они имеют специальный инфиксный синтаксис и нестандартные правила передачи аргументов.

Операторы

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

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

Свойства

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

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

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

Методы

Метод — это функция, принадлежащая какому-то классу или объекту.
Как и процедура, метод состоит из некоторого количества операторов для выполнения какого-то действия, имеет набор входных аргументов и возвращаемое значение.
Методы предоставляют интерфейс, при помощи которого осуществляется доступ к данным объекта некоторого класса, тем самым, обеспечивая инкапсуляцию данных.

События

Событие — это какое-либо действие, которое позволяет классу или объекту уведомлять другие классы или объекты о возникновении каких-либо ситуаций.

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

В C++ в стандартном приложении Windows Forms или веб-приложении пользователь подписывается на события, вызываемые элементами управления, такими как кнопки и поля со списками.

Типы

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

Классы

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

Прочее

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

Справочник

Некоторые компоненты C++ Builder

Brush – кисть, средство для изменения фона изображения.

Button – стандартная электронная кнопка.

Canvas – поверхность для графических построений (канва, холст).

ColorDialog – окно диалога для выбора цвета.

DateTimePicker – часы и календарь.

DirectoryListBox – окно для отображения списка каталогов.

DriveComboBox – окно для выбора логического диска.

Edit – поле для отображения и редактирования строки.

Frame – рамка, контейнер объектов.

FileListBox – окно для отображения списка файлов.

FontDialog – диалоговое окно для выбора шрифта и установки его параметров.

Form – объект, который является основой программы.

Icon – поле иконы, пиктограммы.

Image – окно для графических построений и отображения рисунков.

InputBox – диалоговое окно для ввода строки.

Label – метка, поле для отображения строк.

MainMenu – объект для формирования главного меню.

MediaPlayer – объект для работы со звуковыми, музыкальными и видео файлами.

Memo – окно для отображения многострокового текстового документа.

MessageBox – диалоговое окно для вывода сообщений.

Metafile – поле для хранения графического резинового метафайла в формате wmf или emf.

MonthCalendar – календарь на месяц.

OpenDialog – диалоговое окно для выбора файла.

OpenPictureDialog – диалоговое окно для выбора графического файла.

PaintBox – окно для графических построений.

Panel – панель, используется в качестве подложки.

Pen – перо, пишущий узел для графических построений.

Picture – окно для отображения рисунка.

PopupMenu – объект для формирования всплывающего меню.

PrintDialog – диалоговое окно для ввода на печать.

PrinterSetupDialog – диалоговое окно для настройки принтера.

ProgressBar – объект для визуального отображения состояния какого-либо процесса.

RichEdit – редактор RTF-текста.

SaveDialog – диалоговое окно для сохранения файла.

SavePictureDialog – диалоговое окно для сохранения графического файла.

ScrollBar – полоса прокрутки.

ShowMessage – простейшее окно для вывода сообщений.

StatusBar – строка состояния.

StringGrid – таблица для отображения символьной информации, используется при создании баз данных.

Timer – таймер.

TrackBar – движок-регулятор для изменения какой-либо величины.

 

 Некоторые события, на которые откликается Windows

 

OnClick     При щелчке кнопкой мыши

OnDblClick     При двойном щелчке кнопкой мыши

OnMouseDown     При нажатии кнопки мыши

OnMouseUp     При отпускании кнопки мыши

OnMouseMove     При перемещении мыши

OnKeyPress     При нажатии клавиши клавиатуры

OnKeyDown     При нажатии клавиши клавиатуры

OnKeyUp     При отпускании клавиши клавиатуры

OnCreate     При создании объекта, например формы

OnClose     При закрытии формы

OnActivate     При активизации формы

OnDeactivate     При потере формой активного состояния

OnTimer     По истечении временного интервала таймера

OnPaint     Необходимость в перерисовывании окна

OnEnter     При получении элементом управления фокуса

OnExit     При потере элементом управления фокуса

 

Оператор присваивания в C++

 

=     оператором присваивания служит одиночный знак равенства

 

Логические операторы в C++

 

!a     логическое НЕ (отрицание, инверсия)

a && b     логическое И

a || b     логическое ИЛИ

 

Операторы сравнения в C++

 

a == b     равенство

a != b     неравенство

a > b     больше

a < b     меньше

a >= b     больше или равно

a <= b     меньше или равно

 

                                                   Арифметические операторы в C++

 

—     вычитание, унарный минус

+     сложение

*     умножение

/     деление

%     деление по модулю возвращает остаток от деления нацело

—     декремент – уменьшение

++     инкремент – увеличение

 

Операторы структуры ветвления

 

if     если

else     иначе

 

if (условие)
        {операторы_блока_if}
else
        {операторы_блока_еlsе}

 

                                                 Операторы структуры цикла 

 

while     пока (цикл с предусловием)

do while     делай пока (цикл с постусловием)

for     для (цикл с параметром)

 

                                                Математические функции в C++

 

abs (n)     Абсолютное значение n

sqrt (n)     Квадратный корень из n

exp (n)     Экспонента n

sin (a)     Синус выраженного в радианах угла а

cos (a)     Косинус выраженного в радианах угла а

tan (a)     Тангенс выраженного в радианах угла а

asin (n)     Угол (в радианах), синус которого равен n

acos (n)     Угол (в радианах), косинус которого равен n

atan (n)     Угол (в радианах), тангенс которого равен n

Предыдущие версии и функции — Embarcadero

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

C++Builder 11.2 Alexandria включает доступ к предыдущим версиям

С текущей версией C++Builder вы также получаете доступ к лицензиям на более старые версии — C++Builder XE4-10.4 Sydney, C++Builder 6 и 2007-XE3.

Информацию о загрузке и установке XE8 как предыдущей версии см. на этой странице поддержки.

Это предложение не включено в годовую лицензию C++Builder Pro Term

Как получить лицензии на более ранние версии и загрузки

Лицензии именных пользователей

  • Каждый серийный номер, для которого также требуется лицензия на более раннюю версию, должен быть зарегистрирован в уникальной учетной записи Embarcadero Developer Network (EDN), связанной с предполагаемым конечным пользователем продукта.
  • Вы должны установить и зарегистрировать свой серийный номер 10.x, прежде чем запрашивать лицензии на более ранние версии.
  • Вы должны запросить лицензии на более старые версии в течение 180 дней с момента покупки продукта 10.x.
  • Лицензии на более ранние версии будут привязаны к вашей учетной записи пользователя и не могут быть переданы или проданы. Если ваша лицензия 10.x является обновлением, вы не получите дополнительных лицензий для более старых версий, которые у вас уже есть.

Выберите ссылку ниже, чтобы получить лицензии на более ранние версии для вашего продукта 11.2 Alexandria (ссылки также будут работать для лицензий 11.1, 11.0, 10.4 и 10.3):

  • Версия Professional или Enterprise: Коммерческая
  • Издание Architect: Коммерческое
  • Если вы приобрели лицензии Network Named или Concurrent, лицензии на более ранние версии для версий 2007-10. 4 Sydney будут включены как часть вашей сетевой лицензии. Каждое количество сетевых лицензий — это лицензия набора, которую можно использовать для одновременного запуска одной из включенных версий.
  • C++Builder 6 недоступен в составе сетевых лицензий, но по запросу вы можете получить один серийный номер C++Builder 6 на каждую приобретенную лицензию.
  • Лицензиями C++Builder 6 нельзя управлять через сервер лицензий или использовать их одновременно.

Ограниченная доступность автономных более ранних версий

C++Builder 10.2 Tokyo

Дата выпуска: декабрь 2017 г.

Доступ к лицензии/загрузке более ранней версии для 10.2 Tokyo пользователя закончился 31 декабря 2019 г..

C++Builder 10.1 Berlin

Дата выпуска: апрель 2016 г.

Лицензия на более раннюю версию/доступ для скачивания для пользователей 10. 1 Berlin закончились 31 декабря 2018 г. Лицензия на более раннюю версию/доступ для загрузки для 10 пользователей Seattle закончились 31 декабря 2016 г.

C++Builder XE8

Дата выпуска: апрель 2015 г.0003

C++Builder XE7

Дата выпуска: сентябрь 2014 г.

Доступ к лицензии/загрузке более ранней версии для пользователей XE7 закончился 31 декабря 2015 г.

C++Builder XE6

Дата выпуска: апрель 2014 г. /download доступ для пользователей XE6 закончился 30 июня 2015 г.

C++Builder 10.2 и более ранние версии больше не доступны. Мы рекомендуем приобрести последнюю версию, чтобы получить доступ к более ранним версиям, как описано выше.

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

Профилировщик распределения — анализ приложений C++Builder

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

Профилирование функций управления памятью

Профилирование классов

Подготовка приложения

Подготовка проекта AQTime

Получение подробного стека вызовов

Чтобы программа AQTime могла профилировать ваше приложение, установите параметры компилятора, как описано в разделе Параметры компилятора для Borland C++Builder.

Профилирование функций управления памятью

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

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

Профилировщик распределения отслеживает вызовы диспетчера памяти во время выполнения и вызовы системных функций управления памятью. Сведения о функциях управления системной памятью профилирования см. в разделе Трассировка функций управления системной памятью. Профилировщик отслеживает вызовы следующих функций управления памятью во время выполнения:

  • VCL
    • GetMem , ReallocMem , FreeMem

    • GetMemory , ReallocMemory , FreeMemory

    • SysGetMem , SysReallocMem , SysFreeMem

    Подпрограммы New и Dispose не отслеживаются явно. Они вызывают GetMem , и профилировщик отслеживает эти звонки.

    Чтобы позволить AQTime профилировать вышеупомянутые подпрограммы в приложениях C++Builder, вам может потребоваться добавить определенные модули на панель «Настройка» в дополнение к вашим модулям. Это зависит от параметров компилятора, которые были включены при компиляции приложения, в частности от включения/отключения параметра «Сборка с пакетами среды выполнения». Более подробная информация об этом ниже. Пожалуйста, прочтите его, так как эта информация важна. Если вы не прочитаете его, вы можете получить пустые результаты.
  • С++

Классы профилирования

Профилировщик также может отображать имена классов, сообщающих об утечках объектов. Обратите внимание, что объект будет указан с именем класса, если выполняются следующие условия:

  • VCL
    • Класс должен быть унаследован от TObject .

    • Класс должен ввести новые методы или переопределить методы, производные от TОбъект .

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

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

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

  • C++

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

Подготовка приложения

Для профилирования приложения C++Builder с помощью профилировщика распределения необходимо скомпилировать его с отладочной информацией . Обратите внимание: чтобы предоставить профилировщику распределения доступ к базовым классам VCL, необходимо снять флажок «Сборка с пакетами времени выполнения». Если вы хотите оставить эту опцию включенной, вам необходимо включить определенные библиотеки в ваш проект (дополнительную информацию об этом см. в разделе Подготовка проекта AQTime).

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

Подготовка проекта AQTime

Диспетчер памяти может находиться в профилируемом модуле или в одном из пакетов. Это зависит от параметра компилятора Build with runtime packages (его можно изменить на вкладке Packages диалогового окна Project Options ):

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

    \System32, например, rtl60. bpl для C+ +Builder 6. Если вы хотите профилировать обращения к диспетчеру памяти, вам следует добавить соответствующий пакет в панель настройки. Пакет может быть скомпилирован без отладочной информации. См. темы раздела Параметры компилятора для собственных приложений, чтобы узнать, какой пакет необходим для вашего приложения.

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

  • Если параметр «Сборка с пакетами среды выполнения» отключен, диспетчер памяти находится в профилируемом исполняемом файле. В этом случае нет необходимости добавлять модули .bpl на панель настройки.

Получение подробного стека вызовов

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *