![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как передать в функцию перечесляемый тип? [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.