powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Преобразование типов
18 сообщений из 18, страница 1 из 1
Преобразование типов
    #39664857
bamxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Есть тип
Код: pascal
1.
type BusinessEntityType = (_1, _2, _3);


есть регистрация
Код: pascal
1.
2.
3.
  RemClassRegistry.RegisterExternalPropName(TypeInfo(BusinessEntityType), '_1', '1');
  RemClassRegistry.RegisterExternalPropName(TypeInfo(BusinessEntityType), '_2', '2');
  RemClassRegistry.RegisterExternalPropName(TypeInfo(BusinessEntityType), '_3', '3');


есть переменная
Код: pascal
1.
2.
  var W: BusinessEntityType;
        S: string;


Подскажите, как получить значение переменной W в переменную S (т.е. получить '1', '2' или '3'),
и наоборот, присвоить переменной W значение переменной S ?
...
Рейтинг: 0 / 0
Преобразование типов
    #39664863
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Погугли по словам
RTTI delphi get enum names
...
Рейтинг: 0 / 0
Преобразование типов
    #39664870
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
вот, например

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
type
  TptTokenKind = (
    ptAbsolute,
    ptAbstract,
    ptAddressOp,
    ptAmpersand,
    ptAnd,
    ptAnsiComment,
    ptAnsiString,
    ptArray,
    ptArrayOf,
    ptAs,
    ptAsciiChar,
    ptAsm,
    ptAssembler,
    ptAssign,
    ptAutomated,
    ptBegin,
    ptBoolean,
    ptBorComment,
    ptBraceClose,
    ptBraceOpen,
    ptByte,
    ptByteBool,
    ptCardinal);

function TokenName(Value: TptTokenKind): String;
begin
  result := GetEnumName(TypeInfo(TptTokenKind),Integer(Value));
end;
...
Рейтинг: 0 / 0
Преобразование типов
    #39664872
bamxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кроик Семён,

Код: pascal
1.
GetEnumName(TypeInfo(BusinessEntityType), Ord(W))


возвращает '_1', надо '1'
...
Рейтинг: 0 / 0
Преобразование типов
    #39664875
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bamxxКроик Семён,
Код: pascal
1.
GetEnumName(TypeInfo(BusinessEntityType), Ord(W))


возвращает '_1', надо '1'

Тогда исходный вопрос исправьте, вы спрашивали как получить значение переменной "W: BusinessEntityType" - вы его и получили.
...
Рейтинг: 0 / 0
Преобразование типов
    #39664878
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подозреваю что имелось в виду:
Код: pascal
1.
2.
S := GetEnumName(TypeInfo(BusinessEntityType), Ord(W));
S := RemClassRegistry.GetExternalPropName(TypeInfo(BusinessEntityType), S);
...
Рейтинг: 0 / 0
Преобразование типов
    #39664881
bamxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alekcvp,

Код: pascal
1.
RemClassRegistry.GetExternalPropName(TypeInfo(BusinessEntityType), '_1');


возвращает пустую строку

а вопрос был такой:
как получить значение переменной W в переменную S (т.е. получить '1' , '2' или '3' )
...
Рейтинг: 0 / 0
Преобразование типов
    #39664882
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
bamxxalekcvp,

Код: pascal
1.
RemClassRegistry.GetExternalPropName(TypeInfo(BusinessEntityType), '_1');



возвращает пустую строку

а вопрос был такой:
как получить значение переменной W в переменную S (т.е. получить '1' , '2' или '3' )
я тебе написал, как
...
Рейтинг: 0 / 0
Преобразование типов
    #39664883
чччД__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bamxxalekcvp,

Код: pascal
1.
RemClassRegistry.GetExternalPropName(TypeInfo(BusinessEntityType), '_1');


возвращает пустую строку

а вопрос был такой:
как получить значение переменной W в переменную S (т.е. получить '1' , '2' или '3' )
Ё. :)
Код: pascal
1.
S: = IntToStr(Ord(W))
...
Рейтинг: 0 / 0
Преобразование типов
    #39664884
bamxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дико извиняюсь, все заработало
спасибо

А теперь вопрос, как сделать обратное действие?
...
Рейтинг: 0 / 0
Преобразование типов
    #39664886
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bamxxа вопрос был такой:
как получить значение переменной W в переменную S (т.е. получить '1' , '2' или '3' )
Переменная W не получает значения '1', '2' или '3', она получает значения '_1', '_2' или '_3' - см. её обявление.
Если надо получить индекс значения - то см. ответ чччД_.
...
Рейтинг: 0 / 0
Преобразование типов
    #39664887
чччД__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bamxxДико извиняюсь, все заработало
спасибо

А теперь вопрос, как сделать обратное действие?
Ыыы...
Код: pascal
1.
W := BusinessEntityType(StrToInt(S));
...
Рейтинг: 0 / 0
Преобразование типов
    #39664893
bamxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
чччД__,

для настырных переформулирую вопрос

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
type BusinessEntityType = (_11, _22, _33);

  RemClassRegistry.RegisterExternalPropName(TypeInfo(BusinessEntityType), '_11', '1');
  RemClassRegistry.RegisterExternalPropName(TypeInfo(BusinessEntityType), '_22', '2');
  RemClassRegistry.RegisterExternalPropName(TypeInfo(BusinessEntityType), '_33', '3');

var W: BusinessEntityType;
      S: string;



как получить значение переменной W в переменную S (т.е. получить '1', '2' или '3'),
ответ дал alekcvp
Код: pascal
1.
2.
S := GetEnumName(TypeInfo(BusinessEntityType), Ord(W));
S := RemClassRegistry.GetExternalPropName(TypeInfo(BusinessEntityType), S);



а как наоборот из S='1' получить W=_11 ?
...
Рейтинг: 0 / 0
Преобразование типов
    #39664895
чччД__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bamxx,

прикинь, именно так: 21517030
...
Рейтинг: 0 / 0
Преобразование типов
    #39664900
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bamxx а как наоборот из S='1' получить W=_11 ?
Вы вообще справку почитать не пробовали?..
Код: pascal
1.
S := RemClassRegistry.GetInternalPropName(TypeInfo(BusinessEntityType), '1');
...
Рейтинг: 0 / 0
Преобразование типов
    #39664901
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дальше ещё надо через RTTI получить значение W.
...
Рейтинг: 0 / 0
Преобразование типов
    #39664903
bamxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
чччД__,

для настырных переформулирую вопрос

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
type BusinessEntityType = (_11, _22, _33);

  RemClassRegistry.RegisterExternalPropName(TypeInfo(BusinessEntityType), '_11', '10');
  RemClassRegistry.RegisterExternalPropName(TypeInfo(BusinessEntityType), '_22', '20');
  RemClassRegistry.RegisterExternalPropName(TypeInfo(BusinessEntityType), '_33', '30');

var W: BusinessEntityType;
      S: string;


а как получить из S='10' получить W=_11 ?
...
Рейтинг: 0 / 0
Преобразование типов
    #39664906
bamxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alekcvp,

все, спасибо
вопрос закрыт
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Преобразование типов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]