Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как передать в функцию перечесляемый тип? [D6, Win2k]


Got ©   (2005-11-01 11:34:00) 

Мастаки, хочу написать универсальную функцию, которая считывает из командной строки параметр и возвращает перечисляемы тип.
Параметры я хочу передавать такие - перечислямый тип и имя параметра командной строки. Как это сделать? У меня не выходит. Думал через Variant, но приведение результата(Integer) к этому типу невыходит - ругается...
Получилось только таким макаром:

...
Var1 := TEnum1(GetParamStr(ParamStrNameX, Integer(Low(TEnum1)), Integer(High(TEnum1))));
...

2 и 3 параметры для возврата по умолчанию и проверки границ.
Может я не туда рою, а все намного проще?


Digitman   (2005-11-01 13:19:00) [1]


> Может я не туда рою, а все намного проще?


так и есть)

uses ComObj, StdVcl, ActiveX, AxCtrls, TypInfo;

type
 TMyEnum = (eOne, eTwo, eThree, eFour, eFive);

function GetEnumVal(const EnumName: String): TMyEnum;
begin
 Result := TMyEnum(GetEnumValue(TypeInfo(TMyEnum), EnumName));
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 showmessage(IntToStr(Integer(GetEnumVal('eTwo'))));
end;


Leonid Troyanovsky   (2005-11-01 13:10:00) [2]


> Got   (01.11.05 11:34)  

> из командной строки параметр и возвращает перечисляемы тип.

> Параметры я хочу передавать такие - перечислямый тип и имя
> параметра командной строки. Как это сделать? У меня не выходит.


Вот пример для одной размерности (by Vladimir Titov):

uses
 TypInfo;

type
 TCommand = (CommandOne, CommandTwo, CommandThree, CommandFour);

procedure DoCommand(const Command: string);
begin
 case TCommand(GetEnumValue(TypeInfo(TCommand), Command)) of
   CommandOne: ..;
   CommandTwo: ..;
   ..
 end;
end;

--
Regards, LVT.


Наверх

Титульная страница Поиск, карта сайта Написать письмо