Delphi

Тип перечисляемый delphi: Работа с типами в Delphi. Перечисляемые типы

перечислений — RAD Studio

Перейти к индексу перечислений

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

 enum days { вс, пн, вт, ср, чт, пт, сб } в любое время;
 

устанавливает уникальный целочисленный тип, enum days , переменную anyday этого типа и набор нумераторов ( sun , mon ,…) с постоянными целочисленными значениями.

Параметр компилятора -b управляет параметром «Требовать перечисления как целые числа». При использовании этого переключателя компилятор выделяет целое слово (четырехбайтовое int ) для типов перечисления (переменные типа enum ). По умолчанию установлено значение ON (это означает, что перечисления всегда равны int s), если позволяет диапазон значений, но значение всегда повышается до int при использовании в выражениях.

Идентификаторы, используемые в списке перечислителя, неявно относятся к типу 9.0011 signed char , unsigned char или int , в зависимости от значений перечислителей. Если все значения могут быть представлены в со знаком или без знака char , то это тип каждого перечислителя.

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

 в любой день = пн; // ХОРОШО
в любой день = 1; // недопустимо, несмотря на то, что mon == 1
 

Идентификатор days — это необязательный тег перечисления, который можно использовать в последующих объявлениях переменных перечисления типа enum days :

 перечисление дней день выплаты жалованья, праздник; // объявить две переменные
 

В C++ ключевое слово enum

можно опустить, если days не является именем чего-либо еще в той же области.

Аналогично Структура и union , вы можете опустить тег, если больше не требуются переменные этого типа enum :

 enum { вс, пн, вт, ср, чт, пт, сб } в любое время;
/* анонимный перечисляемый тип */
 

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

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

 /* Выражение инициализатора может включать ранее объявленные перечислители */
перечисление монет { пенни = 1, два пенни, никель = пенни + 4, десять центов = 10,
             четверть = никель * никель } мелочь;
 

таппенс приобретет значение 2, никель значение 5 и четверть значение 25.

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

типы enum могут появляться везде, где разрешены типы int .

 enum days { вс, пн, вт, ср, чт, пт, сб } в любое время;
перечисление дней зарплаты;
typedef перечисление дней DAYS;
ДНИ *daysptr;
int я = вт;
в любой день = пн; // ХОРОШО
*daysptr = в любой день; // ХОРОШО
пн = вт; // НЕПРАВИЛЬНО: mon является константой
 

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

 инт пн = 11;
{
   enum days { вс, пн, вт, ср, чт, пт, сб} в любое время;
   /* перечислитель mon скрывает внешнее объявление int mon */
   struct days { int i, j;}; // НЕПРАВИЛЬНО: повторяющийся тег дней
   двойной сид; // НЕЗАКОННО: переопределение sat
}
пн = 12; // обратно в область действия int mon
 

В C++ перечислители, объявленные в классе, находятся в области действия этого класса.

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

= , [ ] , ( ) и -> должны быть перегружены как функции-члены, их невозможно перегрузить для перечисления . См. пример того, как перегрузить операторы приращения постфикса и префикса.

Delphi Prism 2010 предлагает улучшенную разработку .NET

Домашняя страница InfoQ Новости Delphi Prism 2010 предлагает улучшенную разработку .NET

Лея Эм португальский

Этот пункт в Японский

Закладки

01 сентября 2009 г. 2 мин читать

по

  • Абель Аврам

Запись для InfoQ
Присоединяйтесь к сообществу экспертов. Повысьте свою видимость.
Развивайте свою карьеру.Подробнее

Delphi Prism 2010 включает важные новые функции, такие как улучшенная совместимость с языком Delphi, АОП, поддержка динамического ввода и сенсорные функции, такие как Range Enum Types, классы только для чтения и поддержка отрицательных нижних границ. в массивах.

Delphi Prism 2010 — это решение Embarcadero, позволяющее разработчикам Delphi создавать приложения .NET. Для запуска Delphi Prism требуется .NET Framework 3.5 или 4.0, но он может создавать сборки, предназначенные для любой версии .NET, начиная с 1.1. Если на ПК уже установлена ​​Visual Studio Professional 2008, программа установки Delphi Prism интегрирует в нее Prism. Интеграция с VS 2010 пока не работает, но, скорее всего, она будет работать после выхода VS 2010 или вскоре после этого. Если VS 2008 еще не установлен, Delphi Prism установит оболочку VS и запустится внутри нее. VS Shell — это VS IDE без каких-либо языковых плагинов.

Приложения Delphi Prism могут быть предназначены для .

NET/Windows, Mono/Linux или Mac, но VCL.NET устарел и больше не доступен в Prism. Приложения VCL.NET могут быть перенесены в VCL для Win32, разработка продолжается в Delphi 2010. Языки Delphi и Oxygene очень похожи, но не полностью совместимы. Приложения могут быть перенесены между двумя средами с некоторыми изменениями.

Delphi Prism 2010 содержит следующие новые функции:

Основные возможности компилятора
  • RemObjects Cirrus: AOP для Oxygene
  • Библиотека стандартных аспектов для RemObjects Cirrus (поставляется как техническая предварительная версия)
  • Неуправляемый экспорт
  • Вариант общего типа
  • Неустойчивые поля
  • Поддержка CLSCompliantAttribute и предупреждения компилятора
  • Новые операторы выражений запросов LINQ Skip, While, Take и Take While
Незначительные функции компилятора
  • Поддержка выражений без кавычек (в основном для поддержки Cirrus)
  • Директива компилятора $DELPHICOMPATIBILITY и параметр проекта
  • Проверка диапазона времени выполнения
  • Диапазон типов Enum (например, «type Ten = 1. .10;»)
  • Классы только для чтения
  • Поддержка отрицательных нижних границ в типах массивов
Другие новые функции
  • Усовершенствования CodeDom для поддержки тегов OxygeneInterface, OxygenePartial и OxygeneEmpty в UserData
  • События до/после сборки
  • Параметры отладки: удаленная машина
  • Настраиваемая панель «Добавить ссылку» для добавления ссылок на сборку Mono
  • Новый шаблон Monobjc и библиотеки Monobjc, развернутые с помощью Delphi Prism
  • Обновлена ​​установка для установки последней версии Mono 2.4
  • Добавлен Интернет-пакет как неотъемлемая часть установки
  • Интегрированная справка F1 на основе автономной копии документации wiki
  • Добавлены шаблоны для веб-проектов ASP.NET

Разработчики также могут создавать клиентские приложения DataSnap 2010.

Вики Delphi Prism может похвастаться языковыми функциями, еще недоступными в C#, но вики может быть устаревшей, учитывая новые функции, появившиеся в . NET 4.0:

  • Именованные индексированные свойства
  • Наборы
  • Параллельная поддержка
    Фьючерсы
    Параллельные циклы
  • Оператор двоеточия
  • Встроенные средства доступа к свойствам
  • Классовые контракты
  • Ссылки на классы
  • «подразумевает» оператора
  • «тип корпуса»
  • Уведомления о свойствах
  • Расширенные типы, допускающие значение NULL
  • улучшенный цикл «для каждого»
  • «заблокированная» директива
  • Логическое двойное сравнение
  • Делегирование итерации
  • Пустые методы
  • Фильтры исключений
  • события подъема/выстрела

Delphi Prism выпускается в двух редакциях: Professional и Enterprise. Более поздняя версия обеспечивает подключение к InterBase и Blackfish SQL, поддержку DataSnap .NET и развертывание Blackfish SQL для 5 пользователей.

Оцените эту статью

Принятие

Автор связался с

Вдохновлен этим контентом? Пишите для InfoQ.

Написание статьи для InfoQ открыло для меня много дверей и расширило возможности карьерного роста

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

Вивиан Ху Редактор новостей DevOps @InfoQ; Директор по продуктам @Second State

Запись для InfoQ

Вдохновлен этим контентом? Пишите для InfoQ.

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

Огеневведе Эмени Автор статей @InfoQ; Разработчик программного обеспечения, генеральный директор @Pact

Запись для InfoQ

Вдохновлен этим контентом? Пишите для InfoQ.

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

Эдин Капич Редактор новостей .NET @InfoQ; Ведущий инженер @Vista, бывший Microsoft MVP

Запись для InfoQ

Вдохновлен этим контентом? Пишите для InfoQ.

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

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

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