Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как конвертировать строку в перечисляемый тип? 
:(
    Опции темы
oleg2s
Дата 10.11.2012, 07:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 12.5.2012

Репутация: 1
Всего: 1



Доброго времени суток.
Есть перечисляемый тип:

Type T = (Odin, Dva, Tri);

Есть строка: S := 'Dva';

Как сопоставить S с типом T ?
PM MAIL   Вверх
DarkProg
Дата 10.11.2012, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: 4
Всего: 19



Никак. Только писать дополнительно строку соответствия.
По своей сути в перечисляемом типе находятся поименнованные числа от 0 до n-1.
Можно делать вот так

T(1) - это будет как раз Dva.
Т.е. в коде можно написать например вот так
Код

index:=1;
...
if T(index)=Dva then
 ShowMessage(':)');


А сравнить со строкой без костылей не выйдет...


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
Illusion Dolphin
Дата 10.11.2012, 09:50 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 5
Всего: 63



Код

uses
  ..., TypInfo;

...

type
  TEnum = (Odin, Dva, Tri);

implementation

...
var
  S: string;
  T: TEnum;
begin
  S := 'Dva';
  T := TEnum(GetEnumValue(TypeInfo(TEnum), S));
end;






--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
oleg2s
Дата 10.11.2012, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 12.5.2012

Репутация: 1
Всего: 1



Спасибо, это то что мне и надо было!

 T := TEnum(GetEnumValue(TypeInfo(TEnum), S));

А как создать перечисляемый тип во время выполнения?
Ну или по крайней мере дополнить уже объявленный перечисляемый тип?

Это сообщение отредактировал(а) oleg2s - 10.11.2012, 11:39
PM MAIL   Вверх
Illusion Dolphin
Дата 10.11.2012, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 5
Всего: 63



Цитата

А как создать перечисляемый тип во время выполнения?
Ну или по крайней мере дополнить уже объявленный перечисляемый тип?

Насколько я знаю, создать динамически нельзя, да и нет смысла. А вопрос - а зачем? 


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
oleg2s
Дата 12.11.2012, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 12.5.2012

Репутация: 1
Всего: 1



Было бы очень удобно при обработке параметров, которые можно просто перечислить, но состав и имена их заранее не известны.
Можно конечно запихать все это в массив, но мне кажется с перечисляемым типом было бы компактнее и удобнее.
PM MAIL   Вверх
Illusion Dolphin
Дата 12.11.2012, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 5
Всего: 63



Цитата

при обработке параметров, которые можно просто перечислить, но состав и имена их заранее не известны

Я бы не советовал использовать при этом Enum. Просто имхо.


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

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

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1566 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.