Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Получить текст элемента перечисляемого типа

Delphi , Синтаксис , Записи и Множества

Получить текст элемента перечисляемого типа


// For example, if you have some enum type
// Als Beispiel, wenn dieser Aufzahlungstyp vorhanden ist

{....} 

type 
  TYourEnumType = (One, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten); 

{....} 

{ 
 And you want in run-time to get a string with same value for each of 
 them (for example, fill the Listbox items with enum values), then you 
 can use the next procedure: 
} 

uses TypInfo; 

procedure TForm1.Button1Click(Sender: TObject); 
var 
  i: Integer; 
begin 
  for i := Ord(Low(TYourEnumType)) to Ord(High(TYourEnumType)) do 
    ListBox1.Items.Add(GetEnumName(TypeInfo(TYourEnumType), i)); 
end;

Это код-набор на Delphi, демонстрирующий, как получить текстовое представление типа enum в реальном времени.

Вот, что код делает:

  • Определяет тип enum TYourEnumType с 10 значениями: One, Two, ..., Ten.
  • В обработчике события Button1Click использует цикл для перебора всех возможных значений типа enum.
  • Для каждого значения использует функцию GetEnumName из модуля TypInfo для получения строкового представления enum-значения. Функция принимает три параметра: информацию о типе enum (TypeInfo( TYourEnumType)), порядковое значение enum-константы (i) и буфер для хранения результата.
  • Полученная строка добавляется в список с помощью ListBox1.Items.Add.
  • Вывод будет список с элементами, такими как "One", "Two", ..., "Ten".

Эта APPROACH полезна, когда вам нужно отображать значения enum в виде строк в приложении GUI, например, в комбо-боксе или списке.

Альтернативное решение:

Вместо использования цикла и вызова GetEnumName для каждого enum-значения можно использовать.variant record для хранения enum-значений и соответствующих строковых представлений. Это более компактное и эффективное решение:

uses TypInfo;

procedure TForm1.Button1Click(Sender: TObject);
begin
  with TypeInfo(TYourEnumType) do
    ListBox1.Items := GetEnumNames(TypeInfo, Low(Ordinal), High(Ordinal));
end;

В этом коде функция GetEnumNames используется для получения массива строковых представлений для всех enum-значений. Полученный массив затем присваивается элементам списка.

В статье описывается способ получения текстового представления элементов перечисляемого типа в Delphi с помощью процедуры GetEnumName и использования типинформации.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


:: Главная :: Записи и Множества ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 11:50:01/0.0054090023040771/1