// 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;
beginfor 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-значений и соответствующих строковых представлений. Это более компактное и эффективное решение:
В этом коде функция GetEnumNames используется для получения массива строковых представлений для всех enum-значений. Полученный массив затем присваивается элементам списка.
В статье описывается способ получения текстового представления элементов перечисляемого типа в Delphi с помощью процедуры GetEnumName и использования типинформации.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.